关于asp.net:如何在Razor View Page中导入名称空间?

How do I import a namespace in Razor View Page?

如何在Razor视图页中导入命名空间?


终于找到了答案。

1
@using MyNamespace

对于VB.NET:

1
@Imports Mynamespace

如果您想在整个应用程序中包含一个名称空间,请看一下@javad_Amiry的答案。


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

在项目的"Views目录"中的"web.config"文件中(注意它不是项目根目录中的主web.config),找到以下部分:

1
2
3
4
5
6
7
8
9
10
11
<system.web.webPages.razor>
  <pages pageBaseType="System.Web.Mvc.WebViewPage">
    <namespaces>
     
     
      .
      .
      <!-- etc -->
    </namespaces>
  </pages>
</system.web.webPages.razor>

可以这样添加自定义命名空间:

1
 

这将向所有.cshtml(和/或.vbhtml)文件添加命名空间;此外,您还可以从此处更改视图继承,例如:

1
<pages pageBaseType="My.Custom.MyWebViewPage">

当做。

更新:多亏了@EDOCX1[3]给他关于区域的提醒!他说:

如果你在一个区域内工作,你必须在/Areas//Views/下的Web.config内添加namespace,而不是/Views/


为图书馆

1
@using MyNamespace

为模型

1
@model MyModel


在ASP.NET MVC 3 Preview1中,可以使用global.asax.cs中的此代码在所有Razor视图上导入命名空间。

1
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页面添加自定义命名空间。

基本上你可以做到

1
2
3
4
5
6
7
8
using Microsoft.WebPages.Compilation;
public class PreApplicationStart
{
   public static void InitializeApplication()
   {
       CodeGeneratorSettings.AddGlobalImport("Custom.Namespace");
   }
}

并将以下代码放入assemblyinfo.cs

1
[assembly: PreApplicationStartMethod(typeof(PreApplicationStart),"InitializeApplication")]

方法initializeapplication将在global.asax中的应用程序启动之前执行。


您必须知道的一个问题是,当您通过Views文件夹中的Web.config导入命名空间时,namespace仅为该文件夹中的视图导入。表示如果要在区域视图中导入namespace,还必须在该区域的Web.config文件中导入该namespace,该文件位于该区域的Views文件夹中;


你可以试试这个

1
@using MyNamespace

用于命名空间和库

1
@using NameSpace_Name

为模型

1
@model Application_Name.Models.Model_Name

要在Razor页面上迭代列表(必须使用foreach循环访问列表项)

1
2
3
4
5
6
7
8
9
@model List<Application_Name.Models.Model_Name>

@foreach (var item in Model)
   {  
          <tr>
                <td>@item.srno</td>
                <td>@item.name</td>
         </tr>  
   }

"使用mynamespace"在MVC3 RTM中有效。希望这有帮助。


我认为为了在Razor视图中导入名称空间,只需要通过以下方式添加:

1
@using XX.YY.ZZ