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

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

319333 次浏览

终于找到了答案。

@using MyNamespace

对于VB. Net:

@Imports Mynamespace

如果您想在应用程序中包含命名空间,请查看@拉维·阿米丽的回答

在ASP.NETMVC 3 Preview1中,您可以在Global.asax.cs中使用此代码在所有剃刀视图上导入命名空间

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

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

“使用MyNamesspace”在MVC3 RTM中工作。希望这有帮助。

我找到了这个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")]

方法初始化应用程序将在global.asaxApplication_Start之前执行

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

在项目“#0”目录中的“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/

您必须知道的一个问题是,当您在Views文件夹中通过web.config导入命名空间时,该namespace被导入只是用于该文件夹中的视图。这意味着如果您想在区域视图中导入namespace,您还必须导入该区域的web.config文件中的namespace,该文件位于该区域的Views文件夹中;

我认为为了在razor视图中导入命名空间,您只需要添加以下方式:

@using XX.YY.ZZ

对于图书馆

@using MyNamespace

对于模型

@model MyModel

你可以试试这个

@using MyNamespace

对于命名空间和库

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

根据您的需要,您可以使用以下方法之一: