如何在Razor View Page中导入名称空间?

如何在Razor视图页面中导入名称空间?

终于找到了答案。

@using MyNamespace 

对于VB.Net:

 @Imports Mynamespace 

看看@ Javad_Amiry的答案,如果你想在应用程序中包含一个命名空间。

第一种方法是在.cshtml文件中使用@using语句,仅将名称空间导入当前文件,第二种:

在项目的“ Views ”目录下的“web.config”文件中(注意它不是项目根目录下的主web.config) ,找到这个部分:

 <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> 

你可以像这样添加你的自定义命名空间:

 <add namespace="My.Custom" /> 

这会将名称空间添加到所有.cshtml(和/或.vbhtml)文件; 也可以从这里改变视图继承,如:

 <pages pageBaseType="My.Custom.MyWebViewPage"> 

问候。


更新:感谢@ Nick Silberstein提醒他的地区! 他说:

如果您在一个区域内工作,则必须在Web.config /Areas/<AreaName>/Views/下添加namespace ,而不是/Views/

在ASP.NET MVC 3 Preview1中,您可以使用Global.asax.cs中的此代码在所有剃须刀视图中导入名称空间

 Microsoft.WebPages.Compilation.CodeGeneratorSettings.AddGlobalImport("Namespace.Namespace"); 

我希望在RTM中通过Web.config部分完成。

对于图书馆

 @using MyNamespace 

对于模型

 @model MyModel 

我发现这个http://weblogs.asp.net/mikaelsoderstrom/archive/2010/07/30/add-namespaces-with-razor.aspx ,它解释了如何添加一个自定义名称空间到所有的剃须刀页面。

基本上你可以做到这一点

 using Microsoft.WebPages.Compilation; public class PreApplicationStart { public static void InitializeApplication() { CodeGeneratorSettings.AddGlobalImport("Custom.Namespace"); } } 

并将下面的代码放在AssemblyInfo.cs中

 [assembly: PreApplicationStartMethod(typeof(PreApplicationStart), "InitializeApplication")] 

InitializeApplication方法将在Global.asax中的Application_Start之前执行

你必须知道的一个问题是,当你在Views文件夹中通过web.config导入命名空间时,该namespaceJUST导入该文件夹中的视图。 意思是,如果要在区域视图中导入namespace ,则还必须导入该区域的Views文件夹中该区域的web.config文件中的该namespace ;

“使用MyNamespace”适用于MVC3 RTM。 希望这可以帮助。

你可以试试这个

 @using MyNamespace 

我认为为了在剃刀视图中导入命名空间,你只需要添加下面的方法:

 @using XX.YY.ZZ