- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下属性用于限制对 ajax 请求的操作的使用:
public class AjaxRequestAttribute : ActionMethodSelectorAttribute
{
public override bool IsValidForRequest(ControllerContext controllerContext, System.Reflection.MethodInfo methodInfo)
{
return controllerContext.HttpContext.Request.IsAjaxRequest();
}
}
我定义了以下 Controller 操作方法:
[AjaxRequest]
public ActionResult Login()
{
...
}
[HttpPost, AjaxRequest]
public ActionResult Login(LoginModel model, string returnUrl)
{
...
}
ajax post时出现以下错误:
The current request for action 'Login' on controller type 'AgentController' is ambiguous between the following action methods: System.Web.Mvc.ActionResult Login() on type NappWebsiteMvc.Controllers.AgentController System.Web.Mvc.ActionResult Login(NappWebsiteMvc.Models.Agent.LoginModel, System.String) on type NappWebsiteMvc.Controllers.AgentController
使用附加属性时,HttpPost 属性似乎被忽略。如果我从这两个方法中删除 AjaxRequest 属性,那么代码就可以工作。
正确的实现应该是什么?谢谢!
最佳答案
根据 Pawel 的要求,以下是代码:
public class AjaxGetAttribute : ActionMethodSelectorAttribute
{
public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo)
{
var isHttpGet = new AcceptVerbsAttribute(HttpVerbs.Get).IsValidForRequest(controllerContext, methodInfo);
return isHttpGet && controllerContext.HttpContext.Request.IsAjaxRequest();
}
}
public class AjaxPostAttribute : ActionMethodSelectorAttribute
{
public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo)
{
var isHttpPost = new AcceptVerbsAttribute(HttpVerbs.Post).IsValidForRequest(controllerContext, methodInfo);
return isHttpPost && controllerContext.HttpContext.Request.IsAjaxRequest();
}
}
关于asp.net-mvc - MVC3 : Use of ActionMethodSelectorAttribute causes HttpPostAttribute to be ignored,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8762910/
我希望我的选择器应用于所有操作,但我不想将其复制并粘贴到任何地方。 [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, In
如果我使用自定义 ActionMethodSelectorAttribute 装饰 Controller 操作,则在标准使用期间评估该属性,并且我可以在调试 session 期间中断该属性的主体。但是
以下属性用于限制对 ajax 请求的操作的使用: public class AjaxRequestAttribute : ActionMethodSelectorAttribute { pub
我是一名优秀的程序员,十分优秀!