2016-04-23 9 views
3

I hatten einen MVC-Controller mit der URL, die einen Parameter mit eckigen Klammern in ihm wieWebAPI FromUri Bindung URL-Parameter mit Klammern

public Product GetProduct([Bind(Prefix = "product[productid]") int id) 

die wie

mit der Anforderungs-URL zu arbeiten, verwendete die Bindung hatte

http://localhost:8080/Product/GetProduct?product[productid] = 1001.

Ich bin in der Lage, den Wert für id als 1001 in MVC-Controller zu bekommen. Leider bin ich dies zu einer Web-api-Controller soll sich ändern, und ich habe die api Controller-Methode wie diese definiert

public Task<Product> GetProduct([FromUri(Name=product[productid])] int id) 

, für die ich eine 404-Antwort mit der gleichen URL erhalten. Die [FromUrl] arbeitet mit dem Parameternamen ohne Klammern, wenn wie

definiert
public Task<Product> GetProduct([FromUri(Name=productid)] int id) 

und die URL wie

http://localhost:8080/Product/GetProduct?productid = 1001

Gibt es eine Abhilfe für dieses abgesehen von der Anfrage-URL mit Klammern Parsen und erhalten die Wert.

+0

Nach [dieser Antwort] (http://stackoverflow.com/questions/11490326/is-array-syntax-using-square-brackets-in-url-query-strings-valid) ist diese URL ungültig und muss entkomme sein. – Jasen

+0

Es geht hier nicht um den Umgang mit parametrisierten Arrays, sondern nur um das Format. Der MVC-Controller funktioniert gut mit den geschweiften Klammern und der WebApi-Controller nicht. Vielleicht habe ich es nicht richtig verstanden. Welchen Teil soll ich reparieren? Die URL oder der Controller? – Gerry

Antwort

0

Ihre URL stimmt. Sie sollten den Controller folgendermaßen reparieren:

Ich weiß nicht wirklich, warum das funktioniert.

Verwandte Themen