asp.net-mvc – ASP.NET MVC:Controller.HandleUnknownAction 4
发布时间:2020-12-16 03:27:19 所属栏目:asp.Net 来源:网络整理
导读:我重写了ASP.NET MVC的Controller.HandleUnknownAction(string actionName)方法.在未找到操作时以及在不允许HTTP方法时调用它.我该如何区分这两者?我想在找不到动作时返回404,在允许注意方法时返回405. 解决方法 我能想到的最简单的方法是创建自定义动作过
我重写了ASP.NET MVC的Controller.HandleUnknownAction(string actionName)方法.在未找到操作时以及在不允许HTTP方法时调用它.我该如何区分这两者?我想在找不到动作时返回404,在允许注意方法时返回405.
解决方法
我能想到的最简单的方法是创建自定义动作过滤器.如果不允许方法,这将允许您返回http状态代码结果
public class HttpPostFilterAttribute : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { if (!(filterContext.RequestContext.HttpContext.Request.GetHttpMethodOverride().Equals("post",StringComparison.InvariantCultureIgnoreCase))) { filterContext.Result = new HttpStatusCodeResult(405); } } } 或者更好的是,创建它的更通用版本,就像AcceptVerbsAttribute一样 [AttributeUsage(AttributeTargets.Method,AllowMultiple = false,Inherited = true)] public sealed class AllowMethodsAttribute : ActionFilterAttribute { public ICollection<string> Methods { get; private set; } public AllowMethodsAttribute(params string[] methods) { this.Methods = new ReadOnlyCollection<string>(methods); } public override void OnActionExecuting(ActionExecutingContext filterContext) { string httpMethodOverride = filterContext.HttpContext.Request.GetHttpMethodOverride(); if (!this.Methods.Contains(httpMethodOverride,StringComparer.InvariantCultureIgnoreCase)) { filterContext.Result = new HttpStatusCodeResult(405); } } } 并使用它 [AllowMethods("GET")] public ActionResult Index() { ViewBag.Message = "Welcome to ASP.NET MVC!"; return View(); } 自定义属性以HttpVerbs作为参数取决于您. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 缺少AuthenticationManager引用
- asp.net – WCF服务支持文件jsdebug无法加载
- .net – 如何从用户控件中引用母版页内容控件?
- asp.net-mvc – 如何在MVC3中的局部视图中渲染节?
- asp.net – 如何在url搜索词中处理web.config
- js_ajax模拟form表单提交_多文件上传_支持单个删除
- asp.net – 如何为WCF服务创建重定向?
- asp.net-mvc – ASP.net MVC 4从数据库加载菜单到Partial V
- asp.net – 获取浏览器和连接信息的页面
- asp.net-mvc – MVC Razor获取月份名称
推荐文章
站长推荐
- ASP.Net MVC cookies – 防篡改?
- asp.net-mvc – 如何在ASP.NET MVC上为GET和POST
- asp.net-mvc – 为什么删除:ASP.NET MVC CheckB
- asp.net-mvc – 根据浏览器接受语言自动设置uiCu
- 基于B/S模式的asp大学生社团管理系统
- asp.net-mvc – 基于声明的授权 – 如何管理声明
- asp.net-mvc-3 – IIS 7.5没有注意到MVC 3 app返
- 谈谈分布式事务之三: System.Transactions事务详
- ASP.NET中的缓存控制标头不输出max-age
- asp.net-mvc – 使用Asp.net MVC 4中的OutputCac
热点阅读