Dav*_*ave 4 routing controller asp.net-mvc-4 asp.net-web-api
第一条路线有效.
例如 api/Shelves/SpaceTypes/1
第二条路线不起作用.我得到多个动作错误.
例如 api/Shelves/1
问)为什么?
这些是我的路线:
config.Routes.MapHttpRoute(
"DefaultApiWithAction",
"api/{controller}/{action}/{id}"
);
config.Routes.MapHttpRoute(
"DefaultApiWithId",
"api/{controller}/{id}",
null,
new { id = @"\d+" }
);
Run Code Online (Sandbox Code Playgroud)
这是我的控制器:
public HttpResponseMessage Get(int id)
{
...
}
[ActionName("SpaceTypes")]
public HttpResponseMessage GetSpaceTypes(int id)
{
...
}
Run Code Online (Sandbox Code Playgroud)
The*_*ear 11
对于MVC 4.5,这是唯一可行的
为了使您的路由工作,以下工作
api/Shelves/ //Get All Shelves
api/SpaceTypes/1 //Get Shelf of id 1
api/Shelves/1/SpaceTypes/ //Get all space types for shelf 1
Run Code Online (Sandbox Code Playgroud)
你需要做以下事情.
将您的路由更改为.(注意默认动作..)
config.Routes.MapHttpRoute(
name : "DefaultAPi",
routeTemplate : "api/{controller}/{id}/{action}",
defaults: new {id= RouteParameter.Optional,
action = "DefaultAction"}
);
Run Code Online (Sandbox Code Playgroud)
在您的控制器中将基本方法更改为
[ActionName("DefaultAction")]
public string Get()
{
}
[ActionName("DefaultAction")]
public string Get(int id)
{
}
[ActionName("SpaceTypes")]
public string GetSpaceTypes(int id)
{
}
Run Code Online (Sandbox Code Playgroud)
现在一切都应该按预期工作了..
感谢Kip Streithorst 完整的解释
| 归档时间: |
|
| 查看次数: |
9601 次 |
| 最近记录: |