asp.net-mvc – ASP.NET MVC:忽略基本控制器类中的自定义属性
发布时间:2020-12-16 07:37:31 所属栏目:asp.Net 来源:网络整理
导读:我的项目中有许多控制器,它们都是从一个名为BaseController的控制器继承的.我编写了一个自定义属性,我将其应用于整个BaseController类,因此每次操作都在我的任何控制器中运行时,该属性将首先运行. 问题是我有几个控制器动作,我想忽略该属性,但我不知道该怎么
我的项目中有许多控制器,它们都是从一个名为BaseController的控制器继承的.我编写了一个自定义属性,我将其应用于整个BaseController类,因此每次操作都在我的任何控制器中运行时,该属性将首先运行.
问题是我有几个控制器动作,我想忽略该属性,但我不知道该怎么做. 有人可以帮忙吗?我正在使用MVC 1. 谢谢. 解决方法
我有类似的需求,发现通过创建授权过滤器(实现/派生自FilterAttribute,IAuthorizationFilter)而不是常规操作过滤器(从ActionFilterAttribute派生),并在属性上设置Inherited = true和AllowMultiple = false,它只会在适当的位置运行一次.
这意味着我能够将我的过滤器从基本控制器(站点范围的默认值)“下载”到派生控制器(例如AdminController或其他),或者甚至更进一步到单个操作方法. 例如, [AttributeUsage(AttributeTargets.Class|AttributeTargets.Method,Inherited=true,AllowMultiple=false)] public class MyCustomAttribute : FilterAttribute,IAuthorizationFilter { private MyCustomMode _Mode; public MyCustomAttribute(MyCustomMode mode) { _Mode = mode; } public virtual void OnAuthorization(AuthorizationContext filterContext) { if (filterContext == null) { throw new ArgumentNullException("filterContext"); } // run my own logic here. // set the filterContext.Result to anything non-null (such as // a RedirectResult?) to skip the action method's execution. // // } } public enum MyCustomMode { Enforce,Ignore } 然后使用它,我可以将它应用到我的超级控制器, [MyCustomAttribute(Ignore)] public class BaseController : Controller { } 我可以为特定控制器更改/覆盖它,甚至可以为特定操作更改/覆盖它! [MyCustomAttribute(Enforce)] public class AdministrationController : BaseController { public ActionResult Index() { } [MyCustomAttribute(Ignore)] public ActionResult SomeBasicPageSuchAsAHelpDocument() { } } 这允许我针对特定情况“关闭”过滤器,同时仍然能够将其作为默认应用于整个控制器或整个应用程序. 祝好运! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 使用MVC在ASP.NET中实现API的最佳方法是什么?
- asp.net-mvc-3 – Razor View引擎中的全局变量
- asp.net-mvc – MVC3 ModelBinding回收了一个带有索引间隙的
- asp.net-mvc – 使ASP.MVC2/VS2010应用程序在IIS 7.5中工作
- .NET Core采用的全新配置系统[9]: 为什么针对XML的支持不够
- asp.net-mvc-4 – ASP.NET MVC 4默认模板在_LoginPartial.c
- 一句代码实现批量数据绑定[下篇]
- asp.net-mvc – AllowAnonymous不能使用自定义Authorizatio
- asp.net-mvc – DevExpress MVC GridView – 如何获取单元格
- asp.net-mvc – 使用jquery Ajax加载PartialView?
推荐文章
站长推荐
- asp.net-core – .NET Core与ASP.NET Core
- asp.net – 在.NET中以编程方式添加HttpHandler的
- asp.net-mvc – ModelState.AddModelError编码HT
- asp.net – 适用于.NET开发人员的Windows 7版本
- 在.NET程序集中向ADODB命令添加参数时出错
- asp.net 关于SessionId
- asp.net-mvc – 使用Ninject时如何处理DBContext
- asp.net-mvc – 实体框架包含OrderBy随机生成重复
- asp.net – 匿名类型列表
- asp.net – 什么是关键字如果Page.IsPostBack如何
热点阅读