繁体   English   中英

在整个控制器中调用任何动作时,是否可以调用方法?

[英]Is it possible to call a method when any action is called in a whole controller?

我想在调用任何动作来执行某些工作时调用特定的方法。 我想知道这是否可能? 我确实为所有控制器都配备了basecontroller,但目前没有任何控制器。

即,如果我转到索引页面,则在调用索引动作方法时要对该控制器进行调用,我想做一些工作,然后继续该动作。 我试图避免在每个动作中到处都调用此方法,而是查看是否存在在每个位置调用它的通用方法。

是的,确实有一些东西。 您正在寻找过滤器 ,更具体地说是OnActionExecuting 过滤器

如果在派生的Controller类中重写此方法,则将为该类中的每个操作方法调用该方法。 为了获得更大的灵活性,请从ActionFilterAttribute派生一个类,并在派生的ActionFilterAttribute类中重写此方法。

样品:

protected override void OnActionExecuting(ActionExecutingContext ctx) {
    base.OnActionExecuting(ctx);
    ctx.HttpContext.Trace.Write("Log: OnActionExecuting",
         "Calling " +
         ctx.ActionDescriptor.ActionName);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM