如何在 Razor 视图页面中导入命名空间?
如何在 Razor 视图页面中导入命名空间?
第一种方法是在.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
提醒关于区域的事项!他说:
如果您正在工作的区域内,您必须在 /Areas/<AreaName>/Views/
下的Web.config
中添加命名空间
而不是在
/Views/
下添加。
图书馆
@using MyNamespace
模型
@model MyModel
Microsoft.WebPages.Compilation.CodeGeneratorSettings.AddGlobalImport("Namespace.Namespace");
我希望在RTM中,可以通过Web.config部分来完成此操作。
我发现了这篇文章:http://weblogs.asp.net/mikaelsoderstrom/archive/2010/07/30/add-namespaces-with-razor.aspx,其中详细解释了如何在所有Razor页面中添加自定义命名空间。
基本上,您可以将此代码:
using Microsoft.WebPages.Compilation;
public class PreApplicationStart
{
public static void InitializeApplication()
{
CodeGeneratorSettings.AddGlobalImport("Custom.Namespace");
}
}
并将以下代码放入您的 AssemblyInfo.cs 文件中:
[assembly: PreApplicationStartMethod(typeof(PreApplicationStart), "InitializeApplication")]
在global.asax中,InitializeApplication方法将在Application_Start方法之前被执行。
Microsoft.WebPages.Compilation.AddGlobalImport
的位置已更改为 System.Web.WebPages.Razor.WebCodeRazorHost.AddGlobalImport
。 - jahu你必须知道的一个问题是,当你通过 web.config
在 Views
文件夹中导入一个命名空间时,该 namespace
仅被导入到该文件夹中的视图中。这意味着如果你想在区域视图中导入一个 namespace
,你必须在该区域的 web.config
文件中也导入该 namespace
,该文件位于该区域的 Views
文件夹中;
对于命名空间和库
@using NameSpace_Name
针对模型
@model Application_Name.Models.Model_Name
在 Razor 页面中遍历列表(您必须使用 foreach 循环来访问列表项)
@model List<Application_Name.Models.Model_Name>
@foreach (var item in Model)
{
<tr>
<td>@item.srno</td>
<td>@item.name</td>
</tr>
}
你可以尝试这个
@using MyNamespace
我认为在Razor视图中导入命名空间,你只需要按照以下方式添加即可:
@using XX.YY.ZZ
使用MyNamespace在MVC3 RTM中可行。希望这可以帮到你。
"