Asp.net mvc 4 如何使{controller}/{id}/{action}在MVC4中工作?
我什么都试过了,但看起来一点都不懂。我的WebApiConfig.cs如下所示:Asp.net mvc 4 如何使{controller}/{id}/{action}在MVC4中工作?,asp.net-mvc-4,Asp.net Mvc 4,我什么都试过了,但看起来一点都不懂。我的WebApiConfig.cs如下所示: config.Routes.MapHttpRoute( "Default", "api/{controller}/{id}", new { id = RouteParameter.Optional }); config.Routes.MapHttpRoute( "AccountVerification", "api/{controller}/{id}/{action}",
config.Routes.MapHttpRoute(
"Default",
"api/{controller}/{id}",
new { id = RouteParameter.Optional });
config.Routes.MapHttpRoute(
"AccountVerification",
"api/{controller}/{id}/{action}",
null,
new { controller = "Account" });
public class AccountController : ApiController {
public HttpResponseMessage GetByKey(Guid accountID) {
...
}
[HttpGet]
[ActionName("Verify")]
public HttpResponseMessage VerifyAccount(Guid accountID) {
...
}
}
我的控制器如下所示:
config.Routes.MapHttpRoute(
"Default",
"api/{controller}/{id}",
new { id = RouteParameter.Optional });
config.Routes.MapHttpRoute(
"AccountVerification",
"api/{controller}/{id}/{action}",
null,
new { controller = "Account" });
public class AccountController : ApiController {
public HttpResponseMessage GetByKey(Guid accountID) {
...
}
[HttpGet]
[ActionName("Verify")]
public HttpResponseMessage VerifyAccount(Guid accountID) {
...
}
}
这些方法应该通过以下URL获得成功:
GET /api/account - WORKS
GET /api/account/00000000-0000-0000-000000000001 - WORKS
GET /api/account/00000000-0000-0000-000000000001/verify - DOESNT WORK
我试过很多东西;我在这里肯定做错了……请帮助。GET/api/account/00000000-0000-0000-000000000001/验证是否与路由集合中的第一条路由匹配。因此,它从不检查第二条路径是否匹配。将“api/{controller}/{id}/{action}”作为集合中的第一个路由,它应该可以正常工作 首先,如果您想使用伪Guid进行测试,并且具有可选的Guid参数,它们必须是可为null的参数(伪Guid将反序列化为null): 然后,您的映射应该:
- 首先使用最具体的路线
- 使用正确的参数名称
- 对操作使用正确的默认值
config.Routes.MapHttpRoute( "AccountVerification", "api/{controller}/{accountID}/{action}" ); config.Routes.MapHttpRoute( "Default", "api/{controller}/{accountID}", defaults: new { Controller="Account", action = "GetByKey", accountID = RouteParameter.Optional } );