768

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

4

11 回答 11

879

终于找到了答案。

@using MyNamespace

对于 VB.Net:

@Imports Mynamespace

如果您想在应用程序中包含命名空间,请查看@ravy amiry 的答案。

于 2010-07-14T09:38:44.643 回答
407

第一种方法是文件中的 use@using语句,.cshtml仅将命名空间导入当前文件,第二种方法:

在你的项目“”目录下的“web.config”文件中Views(注意它不是项目根目录下的主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他对区域的提醒!他说:

如果您在某个区域内工作,则必须namespaceWeb.config下面添加/Areas/<AreaName>/Views/而不是 /Views/

于 2011-07-17T09:47:09.353 回答
32

对于图书馆

@using MyNamespace

型号

@model MyModel
于 2016-01-19T08:03:06.030 回答
27

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

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

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

于 2010-07-28T06:47:37.333 回答
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 之前执行

于 2011-04-27T04:40:42.270 回答
14

您必须知道的一个问题是,当您通过web.configinViews文件夹导入命名空间时,它只是为该文件夹namespace中的视图导入的。意味着如果你想在一个区域中导入一个视图,你还必须在该区域的文件中导入那个,位于该区域的文件夹中;namespacenamespaceweb.configViews

于 2011-09-07T23:25:35.453 回答
11

对于命名空间和库

@using NameSpace_Name

型号

@model Application_Name.Models.Model_Name 

For Iterate the list on Razor Page (你必须使用 foreach 循环来访问列表项)

@model List<Application_Name.Models.Model_Name>

@foreach (var item in Model)
   {  
          <tr>
                <td>@item.srno</td>
                <td>@item.name</td>
         </tr>  
   }
于 2018-08-11T12:26:48.667 回答
10

你可以试试这个

@using MyNamespace
于 2017-07-01T20:54:38.003 回答
3

“使用 MyNamespace”在 MVC3 RTM 中有效。希望这可以帮助。

于 2011-01-15T16:28:43.287 回答
2

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

@using XX.YY.ZZ
于 2015-12-03T13:39:15.980 回答
0

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

于 2019-08-06T10:07:15.427 回答