【发布时间】:2012-01-06 18:53:56
【问题描述】:
以下属性用于限制对 ajax 请求的操作:
public class AjaxRequestAttribute : ActionMethodSelectorAttribute
{
public override bool IsValidForRequest(ControllerContext controllerContext, System.Reflection.MethodInfo methodInfo)
{
return controllerContext.HttpContext.Request.IsAjaxRequest();
}
}
我定义了以下控制器操作方法:
[AjaxRequest]
public ActionResult Login()
{
...
}
[HttpPost, AjaxRequest]
public ActionResult Login(LoginModel model, string returnUrl)
{
...
}
ajax发帖时出现如下错误:
当前对控制器类型的“登录”操作请求 'AgentController' 在以下操作方法之间不明确: System.Web.Mvc.ActionResult Login() 类型 NappWebsiteMvc.Controllers.AgentController System.Web.Mvc.ActionResult 登录(NappWebsiteMvc.Models.Agent.LoginModel,System.String)类型 NappWebsiteMvc.Controllers.AgentController
似乎在使用附加属性时忽略了 HttpPost 属性。如果我从这两个方法中删除 AjaxRequest 属性,那么代码就可以工作。
正确的实现应该是什么?谢谢!
【问题讨论】: