根据你的问题和后面的回答,建议你了解下mvc中URL模型(即路由机制),假设products控制器里只有这一个动作GetProduct,mvc中的路由机制是可以自定义url请求模式的,api/{controller}/{action}/{id}是你设定的url规则,所以请求的地址比如:http://localhost:2699/api/products/productA?pid=12&pname=hao,mvc框架会对应提取这个地址的参数,url地址中的api/products/productA分别对应上面url规则中的api/{controller}/{action}/{id},“{id}”被称为一个片段,会对应url模型提取对应的参数片段找不到对应的片段会使用路由的默认值,通过querystring的方式给定的参数地址无论后面在新加几个参数都是能匹配当前url规则的。所以你希望新增第三个参数且找不到该方法只有这个办法:api/products/productA/pid/pname
总结一下:1、假设路由是这样定义的:
routes.MapRoute(
"myRoute", //
"api/{controller}/{action}/{id}", // url规则
new { controller = "products", action = "productA" ,id=UrlParameter.Optional } // 参数默认值
);
下面的url地址都可以匹配的上即是都可以找到该GetProduct动作
http://localhost:2699/api/products?pid=12&pname=hao
http://localhost:2699/api/products/productA?id=12
http://localhost:2699/api/products?pid=12&pname=hao&t=...
http://localhost:2699/api/products/productA/id=12&pname=hao&pid=test
去掉路由products好像也可以匹配的上,可以测试看看。
希望能帮到你
在 api/{controller}/{action}/{id} 中限制参数匹配模式。
怎么限制,能否具体的举个例子?我不想改成api/products/productA/pid/pname这种格式,我希望是Querystring这种格式的:
http://localhost:2699/api/products/productA?pid=12&pname=hao
你好,能指点一二吗?
url route
你好,请问怎么用url route,能否举一个例子。
呵呵,我对你这个问题也很感兴趣,有结果了告诉我一声