2016-04-23 2 views
3

Я имел контроллер MVC с URL, который имел параметр связывания с квадратными скобками в нем, какWebAPI FromUri параметры связывания URL с расчалками

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

, который используется для работы с URL запроса, как

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

Я могу получить значение для id как 1001 в контроллере MVC. К сожалению, я должен изменить это на контроллер Web API и у меня есть метод контроллера апи определен как этот

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

, для которого я получить ответ 404 с тем же URL запроса. В [FromUrl] работает с именем параметра без скобок, когда определяется как

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

и URL, как

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

Есть ли обходной путь для этого помимо разбора URL запроса с фигурными скобками и получить стоимость.

+0

Согласно [этому вопросу] (http://stackoverflow.com/questions/11490326/is-array-syntax-using-square-brackets-in-url-query-strings-valid), что URL-адрес недействителен и должен сбежать. – Jasen

+0

Это не касается работы с параметризованными массивами, это всего лишь URL-адрес формата. Контроллер MVC отлично работает с брекетами, а контроллер WebApi - нет. Может быть, я не понял это правильно. Какую часть я должен исправить. URL или контроллер? – Gerry

ответ

0

Ваш адрес указан справа. Вы должны установить контроллер следующим образом:

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

Я действительно не знаю, почему это работает.

Смежные вопросы