如何在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
导入命名空间时,该namespace
被JUST导入该文件夹中的视图。 意思是,如果要在区域视图中导入namespace
,则还必须导入该区域的Views
文件夹中该区域的web.config
文件中的该namespace
;
“使用MyNamespace”适用于MVC3 RTM。 希望这可以帮助。
你可以试试这个
@using MyNamespace
我认为为了在剃刀视图中导入命名空间,你只需要添加下面的方法:
@using XX.YY.ZZ