本文介绍了有关控制器类型的动作{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}不明确的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-12 08:40