为什么我们需要在ASP.NET MVC中调用父类的空虚方法

乔el敏

我正在加入公司的旧项目,这是一个用ASP.NET MVC开发的企业网站。

由于我是C#和框架的新手(我来自Java背景),因此我无法理解以下特定代码:

internal sealed class ValidatingModelBinder : DefaultModelBinder
{
    protected override void OnModelUpdated(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        base.OnModelUpdated(controllerContext, bindingContext); // This is the damn call I'm stuck with

        var model = bindingContext.Model as IValidatableObject;
        if (model != null)
        {
            ValidateModel(model, bindingContext.ModelState);
        }
    }
    // more methods below...
}

现在,我想知道什么base.OnModelUpdated(....)电话呢,所以我径自的定义DefaultModelBinder,才发现OnModelUpdated()是一个虚拟的方法空的方法体

protected virtual void OnModelUpdated(ControllerContext controllerContext, ModelBindingContext bindingContext);

这有什么意义呢?为什么要调用父类的空方法?

拉贾·纳达尔(Raja Nadar)|

确实取决于您对的定义DefaultModelBinder该类属于.NET框架,因此您需要反编译器(JustDecompile等)才能查看完整的源代码(定义+实现)。该反编译器可以是外部工具,也可以作为Resharper等集成到Visual Studio中。使用这些工具,当您导航到类的定义时,您可以看到整个源代码。

否则,默认情况下,Visual Studio将进入该文件,该文件几乎只有空定义。(实现可能会丢失)

文件和方法的真实定义可以在这里看到:

https://github.com/ASP-NET-MVC/aspnetwebstack/blob/master/src/System.Web.Mvc/DefaultModelBinder.cs

如您所见,实现不是空的。

另外,请注意,调用基类的方法不是强制性的。通常,这样做是在应用任何具体的类特定逻辑之前,仅以100%的时间重做某些事情的方式重用基类中的逻辑。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我们不再需要在更高版本的ASP.NET Core中手动验证模型?

来自分类Dev

使用AngularJs + Web API,为什么我们需要ASP.NET MVC和IIS?

来自分类Dev

使用AngularJs + Web API,为什么我们需要ASP.NET MVC和IIS?

来自分类Dev

为什么我们在ASP .NET 5 wwwroot中需要web.config?

来自分类Dev

为什么我们需要在 asp.net 中将 varchar 更改为 string?

来自分类Dev

我们需要在Asp.net中为网站页面创建Class文件吗?

来自分类Dev

为什么我们要在ConfigureServices中的AddJwtBearer中以及在asp.net核心中创建新的JwtSecurityToken时都提供发布者,受众和密钥

来自分类Dev

为什么我们需要在MSIL中显式调用父构造函数?

来自分类Dev

为什么我们需要在此脚本中调用“ c.set.bind(c)”?

来自分类Dev

为什么我们需要在民意调查中调用poll_wait?

来自分类Dev

为什么我们需要在此脚本中调用“ c.set.bind(c)”?

来自分类Dev

为什么我们需要在famo.us中使用TransitionableTransform类?

来自分类Dev

我们是否需要在.net 4.0或4.5中使用此关键字

来自分类Dev

为什么我们需要在multiSVM方法中进行交叉验证以进行图像分类?

来自分类Dev

为什么我们需要在Android应用中存储Goefence数据?

来自分类Dev

为什么我们需要在JavaScript中定义构造函数

来自分类Dev

为什么我们需要在Kafka Consumer Configuration中添加所有Zookeeper节点

来自分类Dev

为什么我们需要在ConnectionString中设置最小池大小

来自分类Dev

为什么我们需要在C中关闭文件?

来自分类Dev

为什么需要在我们的应用程序中刷新数据库视图?

来自分类Dev

为什么我们需要在链接列表中填充数据?

来自分类Dev

我们为什么需要在vaadin的绑定中设置bean ** binder.setBean(object)**

来自分类Dev

为什么我们总是需要在Visual Studio中通过nuget安装efcore?

来自分类Dev

为什么我们需要在React Hook中返回一个函数?

来自分类Dev

为什么我们需要在ConnectionString中设置最小池大小

来自分类Dev

为什么我们需要在Android应用中存储Goefence数据?

来自分类Dev

为什么我们需要在/ dev / null 2>&1中有2>&1?

来自分类Dev

为什么我们需要在MongoDB中定义数据模型

来自分类Dev

为什么我们需要在实体中声明非空构造函数?

Related 相关文章

  1. 1

    为什么我们不再需要在更高版本的ASP.NET Core中手动验证模型?

  2. 2

    使用AngularJs + Web API,为什么我们需要ASP.NET MVC和IIS?

  3. 3

    使用AngularJs + Web API,为什么我们需要ASP.NET MVC和IIS?

  4. 4

    为什么我们在ASP .NET 5 wwwroot中需要web.config?

  5. 5

    为什么我们需要在 asp.net 中将 varchar 更改为 string?

  6. 6

    我们需要在Asp.net中为网站页面创建Class文件吗?

  7. 7

    为什么我们要在ConfigureServices中的AddJwtBearer中以及在asp.net核心中创建新的JwtSecurityToken时都提供发布者,受众和密钥

  8. 8

    为什么我们需要在MSIL中显式调用父构造函数?

  9. 9

    为什么我们需要在此脚本中调用“ c.set.bind(c)”?

  10. 10

    为什么我们需要在民意调查中调用poll_wait?

  11. 11

    为什么我们需要在此脚本中调用“ c.set.bind(c)”?

  12. 12

    为什么我们需要在famo.us中使用TransitionableTransform类?

  13. 13

    我们是否需要在.net 4.0或4.5中使用此关键字

  14. 14

    为什么我们需要在multiSVM方法中进行交叉验证以进行图像分类?

  15. 15

    为什么我们需要在Android应用中存储Goefence数据?

  16. 16

    为什么我们需要在JavaScript中定义构造函数

  17. 17

    为什么我们需要在Kafka Consumer Configuration中添加所有Zookeeper节点

  18. 18

    为什么我们需要在ConnectionString中设置最小池大小

  19. 19

    为什么我们需要在C中关闭文件?

  20. 20

    为什么需要在我们的应用程序中刷新数据库视图?

  21. 21

    为什么我们需要在链接列表中填充数据?

  22. 22

    我们为什么需要在vaadin的绑定中设置bean ** binder.setBean(object)**

  23. 23

    为什么我们总是需要在Visual Studio中通过nuget安装efcore?

  24. 24

    为什么我们需要在React Hook中返回一个函数?

  25. 25

    为什么我们需要在ConnectionString中设置最小池大小

  26. 26

    为什么我们需要在Android应用中存储Goefence数据?

  27. 27

    为什么我们需要在/ dev / null 2>&1中有2>&1?

  28. 28

    为什么我们需要在MongoDB中定义数据模型

  29. 29

    为什么我们需要在实体中声明非空构造函数?

热门标签

归档