提问



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

最佳参考


终于找到了答案。


@using MyNamespace


对于VB.Net:


@Imports Mynamespace


如果你想在整个应用程序中包含命名空间,请查看@Javad_Amiry的答案。

其它参考1


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


在项目的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提醒他们有关地区的信息!他说:


如果您在区域内工作,则必须在/Areas/<AreaName>/Views/下的Web.config中添加namespace而不是
/Views/

其它参考2


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


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


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

其它参考3


对于图书馆


@using MyNamespace


对于模型


@model MyModel

其它参考4


我发现了这个http://weblogs.asp.net/mikaelsoderstrom/archive/2010/07/30/add-namespaces-with-razor.aspx,它解释了如何为所有剃刀页面添加自定义命名空间。[28]]]


基本上你可以做到这一点


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


您必须知道的一个问题是,当您通过Views文件夹中的web.config导入命名空间时,[[strong namespace导入 JUST 以用于中的视图夹即可。表示如果要在区域视图中导入namespace,还必须在该区域中的web.config文件中导入namespace,位于区域中s Views文件夹;

其它参考6


你可以试试这个


@using MyNamespace

其它参考7


使用MyNamespace适用于MVC3 RTM。希望这可以帮助。

其它参考8


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


@using XX.YY.ZZ