【发布时间】:2019-06-06 17:11:55
【问题描述】:
下面的代码是从this post 复制而来的。我在其他帖子中看到同样的事情,例如在这个this post 的答案中。
为什么base.OnActionExecuting(filterContext); 行包含在整个OnActionExecuting 方法中?
它实现什么目的?
public class HomeController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
// do some irrelevant stuff
base.OnActionExecuting(filterContext);
}
public ActionResult Index()
{
return View();
}
}
【问题讨论】:
-
我认为这个问题可能和你的一样,或者至少有一个可以帮助的答案:stackoverflow.com/questions/6399851/…
-
在此处添加一些详细信息是指向
Controller.cs类的链接,base.OnActionExecution(filterContext)正在调用该类。这是一个空的虚拟方法,因此在您的情况下,它实际上 current 无论您是否调用它都不会产生影响。但是,假设将来您升级 .NET 版本并且升级包含Controller.OnActionExecuting方法中的一些代码,那么新代码将不会被调用,并且很可能会中断。 TLDR;即使它现在什么都不做,我仍然会调用它。 github.com/aspnet/AspNetWebStack/blob/master/src/System.Web.Mvc/… -
作为扩展的旁注,.NET Core 目前正在开发中,框架处于维护模式,所以我非常怀疑任何新的 .NET 框架版本都会发布,并且怀疑您是否会遇到特定的上面提到的用例。但这在其他类似情况下也是一种很好的做法
-
@GregH 我想我明白了。我仍在学习如何更深入地研究提供的框架;有时现有代码的数量是压倒性的。似乎您在说该框架可能具有对 OnActionExecution 重要的代码,但它目前没有,因此没有任何反应,但是如果添加了新代码,如果没有该行,我会错过它并且可能会导致中断。新的框架代码是否也可能导致中断?您的评论比上面第一条评论中引用的帖子更好地解释了它,尽管这是一个很好的参考。也许你应该把它写在这里作为答案。
-
@Alan 你的理解是正确的。此外,确保新框架代码可能会导致某些东西中断是合理的,但是这种情况通常比您不调用
base.OnActionExecuting并且出现问题更容易发现和修复。
标签: asp.net-mvc