我们在哪里注册自定义DataAnnotationsModelMetadataProvider

时间:2016-05-10 16:43:46

标签: asp.net-mvc asp.net-mvc-5

我正在按照这个较旧的答案发现我遇到的问题: Set default for DisplayFormatAttribute.ConvertEmptyStringToNull to false across site

但我对MVC很新,所以当他说Then register it in your app_start:

那么App_Start是一个包含一些类的文件夹,我有BundleConfig, FilterConfig, RouteConfing and Startup.Auth那么我应该在哪些类中注册它?

2 个答案:

答案 0 :(得分:1)

项目根目录中的

Global.asax文件包含Application_Start方法

答案 1 :(得分:1)

首先,打开Global.asax文件。在那里,您将找到Application_Start方法。它可能看起来像这样(你的实际代码会有所不同)

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }

Application_Start方法调用您在App_start文件夹中看到的每个类。最初,我们将所有这些代码都包含在Global.asax中,但它已经非常完整,因此开发了一种模式,用于在App_start中创建单一用途的类并调用它们。

您需要添加的行可以直接位于所有其他调用之下

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);

        ModelMetadataProviders.Current = new CustomModelMetadataProvider(); 
    }

如果发现Application_start方法变得混乱,您可以通过在app_start文件夹中创建静态类并调用静态方法来执行实际工作来复制模式。