asp.net-mvc – 在BaseController的OnActionExecuting之前调用Fi
发布时间:2020-12-15 18:58:21 所属栏目:asp.Net 来源:网络整理
导读:我有一个BaseController,我在其中通过重写OnActionExecuting在ViewData集合中放入一些数据. 现在我在ChildController中有一个不需要该视图数据的Action. 为此,我创建了一个DontPopulateViewData ActionFilterAttribute,它在BaseController上设置一个bool,阻
我有一个BaseController,我在其中通过重写OnActionExecuting在ViewData集合中放入一些数据.
现在我在ChildController中有一个不需要该视图数据的Action. 为此,我创建了一个DontPopulateViewData ActionFilterAttribute,它在BaseController上设置一个bool,阻止BaseController填充viewdata. 问题:ActionFilters OnActionExecuting方法在BaseController中调用之后而不是之前调用. 在基本控制器中重写OnActionExecuting之前是否总是会调用ActionFilters,有没有办法解决这个问题? 解决方法
除了Marwan Aouida发布和建议的内容(在基类上使用ActionFilter)之外,我认为您无法创建在基类的OnActionExecuting()重载之前执行的ActionFilter.以下代码:
[MyActionFilter(Name = "Base",Order = 2)] public class MyBaseController : Controller { protected override void OnActionExecuting(ActionExecutingContext filterContext) { Response.Write("MyBaseController::OnActionExecuting()<br>"); base.OnActionExecuting(filterContext); } protected override void Execute(System.Web.Routing.RequestContext requestContext) { requestContext.HttpContext.Response.Write("MyBaseController::Execute()<br>"); base.Execute(requestContext); } protected override void OnActionExecuted(ActionExecutedContext filterContext) { Response.Write("MyBaseController::OnActionExecuted()<br>"); base.OnActionExecuted(filterContext); } } public class MyActionFilter : ActionFilterAttribute { public string Name; public override void OnActionExecuted(ActionExecutedContext filterContext) { filterContext.HttpContext.Response.Write("MyActionFilter_" + Name + "::OnActionExecuted()<br>"); base.OnActionExecuted(filterContext); } public override void OnActionExecuting(ActionExecutingContext filterContext) { filterContext.HttpContext.Response.Write("MyActionFilter_" + Name + "::OnActionExecuting()<br>"); base.OnActionExecuting(filterContext); } } public class MyTestController : MyBaseController { [MyActionFilter(Name = "Derived",Order = 1)] public void Index() { Response.Write("MyTestController::Index()<br>"); } } 产生这个输出: MyBaseController::Execute() MyBaseController::OnActionExecuting() MyActionFilter_Derived::OnActionExecuting() MyActionFilter_Base::OnActionExecuting() MyTestController::Index() MyActionFilter_Base::OnActionExecuted() MyActionFilter_Derived::OnActionExecuted() MyBaseController::OnActionExecuted() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – ASMX Web服务对传入请求使用错误编码
- asp.net – asp图表错误
- asp.net-mvc – ASP.Net MVC 2.0 Html.HiddenFor HtmlHelpe
- asp.net-mvc – 在MVC5中呈现Razor的部分视图
- 什么是ASP.NET WebForms相当于ASP.NET MVC的ViewData
- ASP.NET MVC5单击Html.ActionLink更改语言/文化
- 身份验证 – 动态添加角色以授权ASP.NET 5中的控制器属性
- asp.net – 天蓝色的动态子域
- asp.net-mvc – Azure ACS 2自定义域
- asp.net – 在Web.Config的Location Path元素中指定多个目录
推荐文章
站长推荐
- asp.net-mvc-4 – 错误:在VS2012中将MVC4升级到
- asp.net-mvc – ASP MVC中的视图中的权限
- 在ASP.NET MVC中创建全局对象的最佳位置
- asp.net-web-api – asp.net web api self hosti
- asp.net-mvc-3 – EF 4.1 – 模型关系
- asp.net-mvc – 如何使用jquery处理JSON?
- asp.net – 从Mvc Action中获取WebApi UrlHelper
- asp.net-mvc – 使用自定义值呈现Html.Hidden帮助
- 我心中的ASP.NET Core 新核心对象WebHost(一)
- asp.net – 当页面用鼠标悬停在元素上时,jQuery触
热点阅读