【发布时间】:2012-07-05 22:53:16
【问题描述】:
我需要映射来创建控制器必须响应两个 url:
- “http://localhost/api/controller?id=1”(其中只有 id 值可以更改)
- “http://localhost/api/controller/anotherId/someconst”(其中anotherId是唯一的变化部分)
我将它映射到这样的路线:
routes.MapHttpRoute("Test", "api/{controller}/{id}/{someconst}", new { controller = "Test", someconst = RouteParameter.Optional });
并且必须在我的控制器中使用方法:
public void Get(int id) { ... }
public void Get(int anotherId, string someconst ) { ... }
它可以工作...但它看起来不太好...因为“string someconst”不是参数,它只是 url 的 const 部分。但是,如果我删除“string someconst”参数,第二个 url 将不起作用。 是否可以将一个控制器映射到两条路由以解析此 url,以便在没有假参数(实际上是 const)的情况下清楚地说明?
【问题讨论】:
-
您的意思是要对控制器进行其他操作吗?你可以说“api/{controller}/{id}/{action}”,然后不叫它“public void Get(int anotherId, string someconst)”,而是叫它“public void GetSomeConst(int anotherId)”。只需确保您设置了默认操作
-
我不完全理解你,但认为你是对的......我找到了相同的解决方案......谢谢
标签: asp.net-mvc asp.net-mvc-routing asp.net-web-api