如何在 Razor 视图页面中导入命名空间?
终于找到了答案。
@using MyNamespace
对于 VB.Net:
@Imports Mynamespace
如果您想在应用程序中包含命名空间,请查看 @ravy amiry's answer。
第一种方法是在 .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
中添加 namespace
而不是 /Views/
对于图书馆
@using MyNamespace
型号
@model MyModel
using
是 C# 编译器关键字。 .cshtml 文件开头的 @using
是对 Razor 模板引擎的提示。
在 ASP.NET MVC 3 Preview1 中,您可以使用 Global.asax.cs 中的代码在所有剃刀视图上导入命名空间
Microsoft.WebPages.Compilation.CodeGeneratorSettings.AddGlobalImport("Namespace.Namespace");
我希望在 RTM 中这可以通过 Web.config 部分完成。
我找到了这个 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 之前执行
Microsoft.WebPages.Compilation.AddGlobalImport
的位置被更改为System.Web.WebPages.Razor.WebCodeRazorHost.AddGlobalImport
。
您必须知道的一个问题是,当您通过 Views
文件夹中的 web.config
导入命名空间时,会为该 文件夹 中的视图导入 JUST 的 namespace
。意味着如果您想在 区域视图 中导入 namespace
,您还必须将该 namespace
导入该区域的 web.config
文件中,该文件位于区域的 Views
文件夹中;
对于命名空间和库
@using NameSpace_Name
型号
@model Application_Name.Models.Model_Name
For Iterate the list on Razor Page (你必须使用 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
“使用 MyNamespace”在 MVC3 RTM 中有效。希望这可以帮助。
我认为为了在剃刀视图中导入命名空间,您只需要添加以下方式:
@using XX.YY.ZZ
根据您的需要,您可以使用以下方法之一:
在第一行视图中添加“using your.domainName;” (如果仅在特定视图中需要)
如果在所有后续视图中都需要,则添加“using your.domainName;”在 _ViewStart.cshtml 中。您可以在以下位置找到更多相关信息:_ViewStart.cshtml 布局文件在何处以及如何链接?
或者在 View web.config 中添加程序集引用,如其他人所述,请参见:How do you implement a @using across all Views in Asp.Net MVC 3?