asp.net-mvc - 为什么从 OnActionExecuting 中调用 OnActionExecuting?
问题描述
下面的代码是从这篇文章中复制的。我在其他帖子中看到同样的事情,例如在这个帖子的答案中。
为什么该行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();
}
}
解决方案
简短的回答:
目前,该行base.OnActionExecuting(filterContext)
不执行任何操作(不执行任何操作)。无论有没有这条线,功能行为都是一样的。
更长的答案:
.NET 源代码Controller.OnActionExecuting
如下所示(取自此处):
protected virtual void OnActionExecuting(ActionExecutingContext filterContext)
{
}
如果你看一下这个OnActionExecuting
方法,你会发现这个方法是完全空的。这是base.OnActionExecuting(filterContext)
正在调用的代码/方法。您不必打电话,因为它目前什么都不做,但我建议您这样做。base.OnActionExecuting(filterContext)
这背后的原因是,如果更新了 .NET 框架,使得该Controller.OnActionExecuting
方法实际上需要其中的代码,那么在不包含相关行的情况下将不会调用所需的代码。这可能会导致一些调试非常困难和耗时的场景。当然也有可能引入新的框架代码,当您调用时会破坏您的代码base.OnActionExecuting
但是,这种情况通常比其他情况更容易发现和修复。当然,最终,这一切都将归结为框架引入了哪些代码以及它破坏了什么,以便识别和解决它的难易程度。
附带说明一下,.NET 框架现在处于维护模式,所以我非常怀疑我上面提到的 .NET 框架更新代码的示例Controller.OnActionExecuting
是否会发生,但它在其他类似场景中也可以作为一个很好的最佳实践。
推荐阅读
- excel - 如何在将 Excel 连接字符串连接到 SQL Server 分析服务时对其进行加密?
- html - 输入在里面弄乱了标签
- python - 如何使用 python 请求 url 和下载文件夹?
- r - 即使在 R 中满足条件,也使用 WHILE 进行无限循环
- nlp - spaCy:为什么 token.conjuncts 只返回一个连词,而不是所有的连词?
- javascript - 使用 react-router-dom 添加多个参数并出现连接问题
- sql-server - MSSQL - 需要将多条记录查询到一条记录/一组结果中 - 基于 Id 和 Date
- regex - 如果下一行的两个单元格在 CSV 文件中为空,我如何重复列值
- reactjs - 为什么 useRef 在此示例中不起作用?
- c - Proteus I2C 调试器通过右移发送附加字节,但 ATmega32 左移一位