2011-08-23 56 views
0

之間我必須使用定製IsWWWAttribute屬性,從ActionMethodSelectorAttribute繼承2個操作,我正在試圖調用POST方法時出現以下錯誤:ActionMethodSelectorAttribute迷路方法

System.Reflection.AmbiguousMatchException 的當前請求在控制器類型'AccountsController'上操作'forgotpassword'在以下操作方法之間不明確:System.Web.Mvc.ActionResult ForgotPassword()對類型.Controllers.AccountsController System.Web.Mvc.ActionResult忘記密碼(.Models.ForgotPasswordModel)on類型.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]然後調用後行動工作正常!

我在這裏錯過了什麼!

回答

0

也許先檢查ActionMethodSelectorAttribute base.IsValidForRequest()方法的結果?然後運行你的邏輯...

0

ActionMethodSelectorBase.RunSelectionFilters將返回匹配的所有動作,並且這兩個方法在發佈後都是有效的。在頂部方法上添加一個[HttpGet],以使其在PostBack上無效