每次动作返回视图时,我都会想要执行一些逻辑。逻辑需要知道动作的名称和控制器。目前我正在使用每个控制器/操作的过滤器,但有时我希望所有返回视图的操作都使用此逻辑。因此,在任何地方添加过滤器似乎都是我可以避免的额外工作。
答案 0 :(得分:2)
您可以覆盖OnActionExecuting或OnActionExecuted方法,为控制器中的所有操作提供常见行为。如果您希望它应用于多个控制器,您可以使用此覆盖创建一个基本控制器类,并使那些需要此行为的控制器派生自基本控制器。
public override void OnActionExecuting( ActionExecutingContext filterContext )
{
... common code here ...
}
public override void OnActionExecuted( ActionExecutedContext filterContext )
{
if (filterContext.Result is ViewResult)
{
... common code here ...
}
}
答案 1 :(得分:1)
要了解过滤器中的操作和控制器名称:
String ActionName = filterContext.ActionMethod.Name;
String ControllerName = filterContext.Controller.ToString();
要将过滤器应用于所有操作,请在基本Controller类上定义OnActionExecuting
,然后将其子类化。
我已经询问了一个特定的question如何仅过滤返回视图的操作...