提问人:Amitabh 提问时间:7/14/2010 最后编辑:Sinister BeardAmitabh 更新时间:11/9/2023 访问量:327497
如何在 Razor 视图页中导入命名空间?
How do I import a namespace in Razor View Page?
答:
终于找到了答案。
@using MyNamespace
对于 VB.Net:
@Imports Mynamespace
如果您想在整个应用程序中包含命名空间,请查看 @ravy amiry 的答案。
评论
在 ASP.NET MVC 3 预览版1 中,可以使用 Global.asax 中的此代码在所有 Razor 视图上导入命名空间.cs
Microsoft.WebPages.Compilation.CodeGeneratorSettings.AddGlobalImport("Namespace.Namespace");
我希望在RTM中通过Web.config部分完成此操作。
评论
“使用 MyNamespace”在 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")]
方法 InitializeApplication 将在 global.asax 中Application_Start之前执行
评论
Microsoft.WebPages.Compilation.AddGlobalImport
System.Web.WebPages.Razor.WebCodeRazorHost.AddGlobalImport
第一种方法是文件中的 use 语句,仅将命名空间导入当前文件,第二种方式:@using
.cshtml
在项目的“视图”目录中的“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/ 下添加命名空间
,而不是 /Views/
评论
您必须知道的一个问题是,当您通过 in folder 导入命名空间时,该命名空间仅针对该文件夹中的视图导入。意味着如果要导入区域视图,还必须导入该区域文件中位于区域文件夹中的 ,则该视图位于区域文件夹中;web.config
Views
namespace
namespace
namespace
web.config
Views
我认为为了在剃刀视图中导入命名空间,您只需要添加以下方式:
@using XX.YY.ZZ
对于图书馆
@using MyNamespace
对于型号
@model MyModel
评论
using
@using
你可以试试这个
@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>
}
根据您的需要,您可以使用以下方法之一:
- 在视图的第一行中,添加“using your.domainName;”(如果是 仅在特定视图中需要)
如果在所有后续视图中需要 然后在 _ViewStart.cshtml 中添加“using your.domainName;”。你可以找到 有关详细信息,请参阅:_ViewStart.cshtml 布局文件链接的位置和方式?
或者在 View web.config 中添加程序集引用,如以下其他人员所述:如何在 Asp.Net MVC 3 中的所有视图中实现@using?
在 C# 中,您可以通过以下方式执行此操作
@using Microsoft.AspNetCore.Http;
评论