我有两个使用自定义的IsWWWAttribute属性继承自ActionMethodSelectorAttribute的操作,我在尝试调用post方法时收到以下错误:
System.Reflection.AmbiguousMatchException 控制器类型'AccountsController'上当前的操作'forgotpassword'请求在以下操作方法之间是不明确的: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动作就可以了!
我在这里缺少什么!
答案 0 :(得分:0)
也许首先检查一下ActionMethodSelectorAttribute base.IsValidForRequest()方法的结果?然后运行你的逻辑......
答案 1 :(得分:0)
ActionMethodSelectorBase.RunSelectionFilters将返回匹配的所有操作,并且这两个方法在post上都有效。在top方法上添加[HttpGet]以使其在PostBack上无效