本文介绍了有关控制器类型的动作{0}当前请求{1}不明确的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有两个动作,我想我的路线 /用户
和 /用户/ {ID}
是不同的。然而,它引发了我的错误。
是否有可能实现这个八九不离十的事情,而无需手动创建的每个的路线,我将有将遵循类似的模式,并编写定制的路线为所有这些其他控制器似乎是多余的坏主意一般。
错误
Code
public class UsersController : Controller
{
public ActionResult Index()
{
return null;
}
public ActionResult Index(int id)
{
return null;
}
}
解决方案
You need an 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;
}
}
And the controller:
public class UsersController : Controller
{
public ActionResult Index()
{
return null;
}
[RequiresParameter("id")]
public ActionResult Index(int id)
{
return null;
}
}
I'm not sure if the above will work, but should give you an idea.
这篇关于有关控制器类型的动作{0}当前请求{1}不明确的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!