ActionMethodSelectorAttribute теряется между методами - PullRequest
0 голосов
/ 23 августа 2011

У меня есть 2 действия с использованием пользовательского атрибута IsWWWAttribute, который наследуется от ActionMethodSelectorAttribute. Я получаю следующую ошибку при попытке вызвать метод post:

System.Reflection.AmbiguousMatchException Текущий запрос на действие 'Forgotpassword'on контроллер типа' AccountsController 'является неоднозначным между следующими методами действия: System.Web.Mvc.ActionResult ForgotPassword () для типа .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 работает нормально!

Чего мне здесь не хватает!

Ответы [ 2 ]

0 голосов
/ 25 сентября 2015

ActionMethodSelectorBase.RunSelectionFilters вернет все совпадающие действия, и оба метода действительны при публикации.Добавьте [HttpGet] в верхний метод, чтобы отключить его в PostBack

0 голосов
/ 29 октября 2011

Может быть, сначала проверить результат метода ActionMethodSelectorAttribute base.IsValidForRequest ()?А потом запусти свою логику ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...