我需要映射以创建控制器必须响应两个URL:
我将它映射到这样的路线:
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的一个常量部分。但如果我删除“字符串someconst”param第二个url将无法正常工作。 有没有可能将一个控制器映射到两个路由来解析这个URL,以便在没有虚假参数的情况下将其清除,这实际上是一个const?
答案 0 :(得分:1)
嗯,我得到了答案......只是为了路线......
routes.MapHttpRoute("Test", "api/{controller}/{id}", new { controller = "Test", action = "Get", id= @"\d+"); );
routes.MapHttpRoute("TestSomeConst", "api/{controller}/{anotherId}/someconst", new { controller = "Test", action = "GetSomeconst", anotherId= @"\d+");
更改控制器方法(操作):
public void Get(int id) { ... }
public void GetSomeconst(int anotherId) { ... }
答案 1 :(得分:0)
您可以尝试做的一件事就是像这样映射路线:
routes.MapHttpRoute("Test", "api/{controller}/{id}/{action}", new { controller = "Test", action = "Get", id= @"\d+"} );
并采取行动:
public void Get(int id) { ... }
[HttpGet]
public void Someconst(int id) { ... }
由于您的操作默认为“获取”方法,因此您可以忽略该操作并使用以下方法调用它:
http://localhost/api/test/1
如果您想调用其他方法,可以使用
http://localhost/api/test/1/someconst