如何在Razor View页面中导入名称空间?

时间:2010-07-13 16:03:12

标签: asp.net asp.net-mvc-3 razor webmatrix

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

11 个答案:

答案 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)

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