asp.net-mvc – 在BaseController的OnActionExecuting之前调用FilterAtt
发布时间:2020-05-23 09:28:14 所属栏目: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 MVC应用程序中组织JavaScript代码
- asp.net-core – .NET Core与ASP.NET Core
- asp.net – 在网页上的ReportViewer控件中呈现时,Reporting
- asp.net-mvc – 更改MVC4上的基本视图类型
- asp.net-mvc-3 – 单元测试一个文件上传,怎么样?
- asp.net 读取xml文件里面的内容,绑定到dropdownlist中
- IIS 7中的应用程序池不显示.NET Framework 3.5
- asp.net – 转发器控件中的单选按钮列表
- asp.net – 在Azure Web App中设置EF连接字符串
- asp.net – 如何以编程方式将参数传递给SSRS报告
推荐文章
站长推荐
- asp.net – 如何在MVC 5中为OwinContext设置Time
- .NET Framework 3.5中有哪些有用的新ASP.NET功能
- asp.net – 使用JQuery从viewstate获取值?
- 是否可以使Page.IsPostBack独立于ASP.net而变为真
- 问题在ASP.NET 5(Core)中添加对类库项目的引用
- asp.net-mvc – 使用IIS 7重写模块重写Ampersand
- asp.net – 测试后的NUnit回滚
- asp.net – jQuery AJAX vs. UpdatePanel
- asp.net – 如何在MVC4的部分视图中添加脚本?
- ASP.NET动态创建控件和回发
热点阅读
