How to import a namespace in Razor View Page?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
Finally found the answer.
@using MyNamespace
For VB.Net:
@Imports Mynamespace
Take a look at @ravy amiry’s answer if you want to include a namespace across the app.
Method 2
The first way is that use @using
statement in .cshtml
files, that imports a namespace to current file only, and the second:
In the “web.config” file in “Views
” directory of your project (notice it is not the main web.config in project’s root), find this section:
<system.web.webPages.razor> <pages pageBaseType="System.Web.Mvc.WebViewPage"> <namespaces> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> . . <!-- etc --> </namespaces> </pages> </system.web.webPages.razor>
you can add your custom namespace like this:
<add namespace="My.Custom" />
that will add the namespace to all of .cshtml (and/or .vbhtml) files;
also you can change views inheritance from here, like:
<pages pageBaseType="My.Custom.MyWebViewPage">
Regards.
UPDATE: Thanks to @Nick Silberstein
to his reminder about areas! He said:
If you’re working within an area, you must add the namespace
within the Web.config
under /Areas/<AreaName>/Views/
rather than
/Views/
Method 3
For Library
@using MyNamespace
For Model
@model MyModel
Method 4
In ASP.NET MVC 3 Preview1 you can import a namespace on all your razor views with this code in Global.asax.cs
Microsoft.WebPages.Compilation.CodeGeneratorSettings.AddGlobalImport("Namespace.Namespace");
I hope in RTM this gets done through Web.config section.
Method 5
I found this http://weblogs.asp.net/mikaelsoderstrom/archive/2010/07/30/add-namespaces-with-razor.aspx which explains how to add a custom namespace to all your razor pages.
Basically you can make this
using Microsoft.WebPages.Compilation; public class PreApplicationStart { public static void InitializeApplication() { CodeGeneratorSettings.AddGlobalImport("Custom.Namespace"); } }
and put the following code in your AssemblyInfo.cs
[assembly: PreApplicationStartMethod(typeof(PreApplicationStart), "InitializeApplication")]
the method InitializeApplication will be executed before Application_Start in global.asax
Method 6
One issue that you must know is that when you import a namespace via web.config
in Views
folder, that namespace
is imported JUST for views in that folder. Means if you want to import a namespace
in an area views, you must also import that namespace
, in that area’s web.config
file, located in area’s Views
folder;
Method 7
For namespace and Library
@using NameSpace_Name
For Model
@model Application_Name.Models.Model_Name
For Iterate the list on Razor Page (You Have to use foreach loop for access the list items)
@model List<Application_Name.Models.Model_Name> @foreach (var item in Model) { <tr> <td>@item.srno</td> <td>@item.name</td> </tr> }
Method 8
You can try this
@using MyNamespace
Method 9
“using MyNamespace” works in MVC3 RTM. Hope this helps.
Method 10
I think in order import namespace in razor view, you just need to add below way:
@using XX.YY.ZZ
Method 11
Depending on your need you can use one of following method:
- In first line/s of view add “using your.domainName;” (if it is
required in specific view only) -
if required in all subsequent views
then add “using your.domainName;” in _ViewStart.cshtml. You can find
more about this in: Where and how is the _ViewStart.cshtml layout file linked? - Or add Assembly reference in View web.config as described by others explained in: How do you implement a @using across all Views in Asp.Net MVC 3?
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0