Import Namespaces for Razor Views

Previously when developing with the WebForms view engine we could use the Web.config file to import namespaces where we stored our extension methods or models. They would then be available to all our views without having to explicitly declare them in each view.

In Razor this is no longer possible due to how it’s built, which is why we have to manually register them in the Application_Start event.

To do this begin with opening Global.asax and create a new method called RegisterGlobalImports, and call it from the Application_Start method. In the newly created method you add all the namespaces you wish to have in your view by calling AddGlobalImport on CodeGeneratorSettings.

public static void RegisterGlobalImports() { 
    CodeGeneratorSettings.AddGlobalImport("MvcApplicationRazor.Core.Extensions");
    CodeGeneratorSettings.AddGlobalImport("MvcApplicationRazor.Core.Models");
} 

protected void Application_Start() { 
    RegisterGlobalImports(); 
     
    AreaRegistration.RegisterAllAreas();             
    RegisterRoutes(RouteTable.Routes); 
}

I usually register extension methods, that should be available in the view, and models so I won’t have to type namespaces over and over again.

published in ASP.NET MVC