如何在Razor View Page中导入命名空间?
答案 0 :(得分:804)
终于找到了答案。
@using MyNamespace
对于VB.Net:
@Imports Mynamespace
如果要在整个应用程序中包含命名空间,请查看@ Javad_Amiry的答案。
答案 1 :(得分:387)
第一种方法是在@using
文件中使用.cshtml
语句,只将命名空间导入当前文件,第二种方式:
在项目的“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
提醒您有关区域的信息!他说:
如果您在区域中工作,则必须在namespace
下的Web.config
内添加/Areas/<AreaName>/Views/
而不是/Views/
{{1}}
答案 2 :(得分:29)
图书馆
@using MyNamespace
对于模型
@model MyModel
答案 3 :(得分:27)
在ASP.NET MVC 3 Preview1中,您可以使用Global.asax.cs中的此代码在所有剃刀视图上导入命名空间
Microsoft.WebPages.Compilation.CodeGeneratorSettings.AddGlobalImport("Namespace.Namespace");
我希望在RTM中通过Web.config部分完成。
答案 4 :(得分:16)
我找到了这个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之前执行答案 5 :(得分:14)
您必须知道的一个问题是,当您通过web.config
文件夹中的Views
导入命名空间时,namespace
导入 JUST 以查看其中的视图的文件夹即可。表示如果要在区域视图中导入namespace
,则还必须在该区域的namespace
文件中导入web.config
,该文件位于区域Views
中1}}文件夹;
答案 6 :(得分:9)
你可以试试这个
@using MyNamespace
答案 7 :(得分:7)
对于名称空间和库
@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>
}
答案 8 :(得分:3)
“使用MyNamespace”适用于MVC3 RTM。希望这会有所帮助。
答案 9 :(得分:2)
我认为为了在razor视图中导入命名空间,您只需要添加以下方式:
@using XX.YY.ZZ
答案 10 :(得分:0)
根据您的需要,可以使用以下方法之一:
(如果在所有后续视图中都需要) 然后添加“ using your.domainName;”在_ViewStart.cshtml中。你可以找到 有关更多信息,请访问Where and how is the _ViewStart.cshtml layout file linked?
或按照How do you implement a @using across all Views in Asp.Net MVC 3?