【问题标题】:ActionMethodSelectorAttribute getting lost between methodsActionMethodSelectorAttribute 在方法之间迷路
【发布时间】:2011-08-23 08:51:01
【问题描述】:

我有 2 个使用从 ActionMethodSelectorAttribute 继承的自定义 IsWWWAttribute 属性的操作,尝试调用 post 方法时出现以下错误:

System.Reflection.AmbiguousMatchException 当前对控制器类型“AccountsController”的操作“forgotpassword”请求在以下操作方法之间不明确: System.Web.Mvc.ActionResult ForgotPassword() on type .Controllers.AccountsController System.Web.Mvc.ActionResult ForgotPassword(.Models. ForgotPasswordModel) 类型为 .Controllers.AccountsController

    [IsWWW]
    public ActionResult ForgotPassword()
    {
        // SOME CODE
    }
    [HttpPost]
    [IsWWW]
    public ActionResult ForgotPassword(ForgotPasswordModel model)
    {
        // SOME CODE
    }

自定义属性:

    public class IsWWWAttribute : ActionMethodSelectorAttribute
{
    public override bool IsValidForRequest(ControllerContext controllerContext, System.Reflection.MethodInfo methodInfo)
    {
        return Configuration.Subdomain.SubDomainID == 0;
    }
}

如果我删除 [IsWWW],那么调用 post 操作就可以了!

我在这里错过了什么!

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 razor attributes


    【解决方案1】:

    也许检查第一个 ActionMethodSelectorAttribute base.IsValidForRequest() 方法的结果?然后运行你的逻辑......

    【讨论】:

      【解决方案2】:

      ActionMethodSelectorBase.RunSelectionFilters 将返回所有匹配的操作,并且这两种方法在发布时都有效。在顶部方法上添加一个 [HttpGet] 使其在 PostBack 上无效

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-26
        • 1970-01-01
        • 1970-01-01
        • 2021-10-19
        • 2022-11-23
        • 1970-01-01
        相关资源
        最近更新 更多