【发布时间】:2014-03-02 19:10:41
【问题描述】:
我想在调用任何操作来执行某些工作时调用特定方法。我想知道这是否可能?我确实有一个用于所有控制器的基本控制器,但目前那里什么都没有。
即 如果我转到索引页面,则会在调用该方法时向控制器调用索引操作方法,我想做一些工作然后继续操作。我试图避免在每一个动作中到处调用这个方法,看看是否有一种通用的方法可以在任何地方调用它。
【问题讨论】:
标签: c# asp.net-mvc
我想在调用任何操作来执行某些工作时调用特定方法。我想知道这是否可能?我确实有一个用于所有控制器的基本控制器,但目前那里什么都没有。
即 如果我转到索引页面,则会在调用该方法时向控制器调用索引操作方法,我想做一些工作然后继续操作。我试图避免在每一个动作中到处调用这个方法,看看是否有一种通用的方法可以在任何地方调用它。
【问题讨论】:
标签: c# asp.net-mvc
是的,确实有这样的东西。您正在寻找filters,更具体地说是OnActionExecuting。
如果此方法在派生的 Controller 类中被覆盖,则该类中的每个操作方法都会调用该方法。为了更灵活,从 ActionFilterAttribute 派生一个类,并在派生的 ActionFilterAttribute 类中重写此方法。
示例:
protected override void OnActionExecuting(ActionExecutingContext ctx) {
base.OnActionExecuting(ctx);
ctx.HttpContext.Trace.Write("Log: OnActionExecuting",
"Calling " +
ctx.ActionDescriptor.ActionName);
}
【讨论】: