首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么OnActionExecuting是从OnActionExecuting内部调用的?

为什么OnActionExecuting是从OnActionExecuting内部调用的?
EN

Stack Overflow用户
提问于 2019-06-06 17:11:55
回答 1查看 176关注 0票数 1

下面的代码是从这个职位复制的。我在其他帖子中看到了同样的情况,比如这个这个职位的答案。

为什么base.OnActionExecuting(filterContext);行包含在整个OnActionExecuting方法中?

它达到了什么目的?

代码语言:javascript
复制
public class HomeController : Controller
    {
    protected override void OnActionExecuting(ActionExecutingContext filterContext)
            {
                // do some irrelevant stuff
                base.OnActionExecuting(filterContext);           
            }

    public ActionResult Index()
            {            
                return View();
            }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-06 19:40:29

简短回答:

目前,行base.OnActionExecuting(filterContext)不执行任何操作(不执行任何工作)。功能行为将与行或不带行相同。

更长的答案:

用于.NET的Controller.OnActionExecuting源代码如下(取自这里):

代码语言:javascript
复制
protected virtual void OnActionExecuting(ActionExecutingContext filterContext)
{
}

如果您查看OnActionExecuting方法,您将看到这个方法是完全空的。这是base.OnActionExecuting(filterContext)正在调用的代码/方法。您不必调用base.OnActionExecuting(filterContext),因为它目前什么也不做,但是我建议这样做。这背后的原因是,如果.NET框架被更新,以至于Controller.OnActionExecuting方法实际上需要它中的代码,那么如果不包括所讨论的行,就不会调用所需的代码。这可能会导致一些很难调试且耗时的场景。当然,引入新的框架代码也是可能的,当您调用base.OnActionExecuting时确实会破坏您的代码,但是这种场景通常比其他场景更容易识别和修复。当然,最终,这将取决于框架引入了什么代码,以及框架破坏了什么,以便于识别和解决。

顺便提一下,.NET框架现在处于维护模式,所以我非常怀疑上面提到的.NET框架在Controller.OnActionExecuting中更新代码的例子,不过在其他类似的场景中,它也是一个很好的最佳实践。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56482226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档