我有两个动作,我想要我的路线/users
and /users/{id}
与众不同。然而它给我带来了错误。
是否可以在不手动创建的情况下实现这种事情every路线,我将有其他控制器将遵循类似的模式,并为所有这些控制器编写自定义路线,一般来说似乎是多余的和坏主意。
Error
当前对控制器类型上的操作“Index”的请求
“UsersController”在以下操作方法之间不明确:
System.Web.Mvc.ActionResult 类型上的 Index()
Api.Controllers.UsersController System.Web.Mvc.ActionResult
Api.Controllers.UsersController 类型上的索引(Int32)
Code
public class UsersController : Controller
{
public ActionResult Index()
{
return null;
}
public ActionResult Index(int id)
{
return null;
}
}
你需要一个ActionMethodSelector
:
public class RequiresParameterAttribute : ActionMethodSelectorAttribute {
readonly string parameterName;
public RequiresParameterAttribute(string parameterName) {
this.parameterName = parameterName;
}
public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo) {
return controllerContext.RouteData.Values[parameterName] != null;
}
}
和控制器:
public class UsersController : Controller
{
public ActionResult Index()
{
return null;
}
[RequiresParameter("id")]
public ActionResult Index(int id)
{
return null;
}
}
我不确定上面的方法是否有效,但应该可以给你一个想法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)