C# 用什么代替OnActionExecuting?ASP.NETMVC

C# 用什么代替OnActionExecuting?ASP.NETMVC,c#,asp.net-mvc,model-view-controller,C#,Asp.net Mvc,Model View Controller,我在BaseController中的OnActionExecuting方法中做了一些事情,我的所有其他控制器都基于这些事情 我正在做一些简单的事情,比如将一个变量放入ViewData中,“几乎”我所有的视图都需要它,并填充控制器使用的几个属性 让我烦恼的是,这项工作即使在不需要它的动作上也在进行。有没有更好的地方可以更有效地完成这项工作?以防我需要做比现在更重的事情(如DB访问等) 更新:我更具体地指的是一个典型的控制器场景。其中有几个操作只是显示一个视图。还有一些采取表单提交,做一些工作,并重

我在BaseController中的OnActionExecuting方法中做了一些事情,我的所有其他控制器都基于这些事情

我正在做一些简单的事情,比如将一个变量放入ViewData中,“几乎”我所有的视图都需要它,并填充控制器使用的几个属性

让我烦恼的是,这项工作即使在不需要它的动作上也在进行。有没有更好的地方可以更有效地完成这项工作?以防我需要做比现在更重的事情(如DB访问等)

更新:我更具体地指的是一个典型的控制器场景。其中有几个操作只是显示一个视图。还有一些采取表单提交,做一些工作,并重定向到另一个操作

在本例中,我希望显示视图的操作使用在OnActionExecuting方法中完成的工作。但是接受表单提交的操作,在OnActionExecuting中完成的工作没有被使用,因此只会增加不必要的处理时间

也许我没解释清楚。。。希望现在更清楚了


蒂亚

创建从BaseController派生的第二个“AdvancedBaseController”?

如果将操作列入黑名单(通过为不应执行此逻辑的操作赋予属性)比白名单操作更容易,则可以创建[SuppressWhateverLogic]属性,并将其应用于要列入黑名单的方法。然后修改OnActionExecuting()方法以查找该属性(通过ActionExecutingContext.ActionDescriptor.IsDefined()),如果该属性存在,则退出逻辑


如果更容易将操作列入白名单,请将逻辑移出Controller.OnActionExecuting()并通过将ActionFilterAttribute子类化来创建自定义[MyLogic]筛选器。将逻辑添加到MyLogicAttribute.OnActionExecuting(),然后将要与[MyLogic]关联的方法属性化,以将逻辑与这些方法关联。

好吧,在我的典型控制器中。。。有些操作只是显示视图。我确实希望使用我在BaseController中执行的工作。有一些操作,例如在重定向到另一个操作之前接收post以在后端执行某些工作的操作。我只想排除那些参与OnActionExecuting的人,因为这只会给那些不需要数据的请求增加处理时间。我目前不在一个可以访问代码的地方,但这听起来是一个合理的解决方案。非常感谢。