【发布时间】:2013-01-28 23:30:56
【问题描述】:
目前我们使用以下路由规则来满足我们所有的控制器;优点是我们不必为每个控制器中的每个操作定义路由:
routes.MapHttpRoute("3", "{controller}/{action}/{arg1}/{arg2}/{arg3}");
routes.MapHttpRoute("2", "{controller}/{action}/{arg1}/{arg2}");
routes.MapHttpRoute("1", "{controller}/{action}/{arg1}");
routes.MapHttpRoute("0", "{controller}/{action}");
但是,由于这个原因,方法中的参数名称必须匹配;像这样:
// Example method signature
public ResponseDto GetResponse(int arg1, int arg2)
如果将参数名称更改为更友好的名称(例如:显示每个参数意图的名称,而不是模棱两可的“arg1”名称),如下所示:
// Better example method signature
public ResponseDto GetResponse(int userId, int itemId)
绑定会中断,除非:
- 明确定义路由和参数名称
- 使用查询字符串传入参数
有没有办法设置 WebApi 路由,所以它会根据参数的数量自动使用正确的操作;而不是参数名称?
【问题讨论】:
标签: c# asp.net-web-api