2016-04-23 100 views
3

的WebAPI FromUri绑定URL参数我与URL的MVC控制器,其有一个参数与方括号中它结合等用大括号

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

其使用与该请求的URL的工作像

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

我可以在MVC控制器中获得id的值为1001。不幸的是,我应该改变这一个网页API控制器和我有这样定义的

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

为此,我得到相同的请求URL 404响应API控制方法。该[FromUrl]作品有没有括号参数名的时候喜欢

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

和像

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)该网址是无效的,必须逃脱。 – Jasen

+0

这不是关于处理参数化数组,它只是关于url的格式。 MVC控制器可以正常工作,而WebApi控制器不会。可能是我没有正确地得到它..我应该修复哪个部分.. URL或控制器? – Gerry

回答

0

您的网址是否正确。你应该通过以下方式修复控制器:

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

我真的不知道这是为什么。