如何在剃刀视图页面导入命名空间?


当前回答

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

在“网络”中。在你的项目的“Views”目录下的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中添加名称空间。在“/ regions /<AreaName>/Views/”下配置 /视图/

其他回答

终于找到了答案。

@using MyNamespace

VB。Net:

@Imports Mynamespace

如果你想在整个应用程序中包含一个命名空间,可以看看@ravy amiry的答案。

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

在“网络”中。在你的项目的“Views”目录下的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中添加名称空间。在“/ regions /<AreaName>/Views/”下配置 /视图/

对于命名空间和库

@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>  
   }

在ASP。你可以用这段代码在Global.asax.cs中导入一个命名空间到你所有的razor视图

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

我希望在RTM中可以通过Web完成。配置部分。

“使用MyNamespace”工作在MVC3 RTM。希望这能有所帮助。