我的项目中有一条简单的路线:
routes.MapRoute(
name: "api",
template: "api/{controller}/{action}");
在我的控制器中,我有两个动作:
[HttpGet]
public string Get(string value)
{
return value;
}
[HttpGet]
public string Get(int id)
{
return id.ToString();
}
现在当我尝试像api/controller/get?id=1
这样的网址时,它不起作用,因为框架无法区分两个动作。据我所知,它在普通的web api中运行得非常好,因为很明显这个url只根据它的参数匹配其中一个动作。我做错了什么或者新的MVC6不支持它?
答案 0 :(得分:2)
我做错了什么或新MVC6不支持?
MVC操作选择器在选择操作期间不要考虑Action的参数。因此,您不能有两个操作对应一个路径模板。除了动作有不同的动作约束(HttpPost,HttpGet)。
代码中的理论上,基于参数的某些操作之间选择逻辑必须是SelectBestActions方法,但是it do nothing