我希望在调用任何操作时调用特定方法来执行某些操作。我想知道这是否可能?我的所有控制器都有一个基本控制器,但目前没有任何控制器。
即。 如果我进入索引页面,当调用该方法时,将调用控制器调用索引操作方法我想做一些工作然后继续操作。我试图避免在每一个动作中都调用这个方法,看看是否有一种通用的方式在每个地方调用它。
答案 0 :(得分:6)
是的,确实存在一些问题。您正在寻找filters,更具体地说是OnActionExecuting
。
如果在派生的Controller类中重写此方法,则将为该类中的每个操作方法调用该方法。为了获得更大的灵活性,从ActionFilterAttribute派生一个类,并在派生的ActionFilterAttribute类中重写此方法。
样品:
protected override void OnActionExecuting(ActionExecutingContext ctx) {
base.OnActionExecuting(ctx);
ctx.HttpContext.Trace.Write("Log: OnActionExecuting",
"Calling " +
ctx.ActionDescriptor.ActionName);
}