当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在RazorView页面中导入名称空间?》经验,为你挑选了8个好方法。

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



1> Amitabh..:

终于找到了答案.

@using MyNamespace

对于VB.Net:

@Imports Mynamespace

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


这不是一种糟糕的做法.这是绝对必要的功能.web.config就像一个全局的using语句,它使所有页面中的命名空间都处于活动状态.如果您在不同的命名空间中具有相同名称的类,那么这可能不是您想要的.如果您尝试在同一文件中使用它们,则仍会发生冲突,但您可以在单个文件中轻松解决该问题.如果您将其粘贴在web.config中,那么在使用其中任何一个类的所有页面中都会出现冲突.所以称这种糟糕的做法完全没有意义.
你也不需要分号.
另外:他们不能进入代码块.(你会得到一个运行时错误)
这只是不好的练习期.请不要将它添加到剃须刀页面的顶部.这很麻烦等......正确的方法是添加到Views - web.config就像@Javad_Amiry指出的那样.
我很惊讶Intellisense没有提示像在普通的C#页面中那样添加using语句.

2> javad amiry..:

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

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


  
    
      
      
      .
      .
      
    
  

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


这会将命名空间添加到所有.cshtml(和/或.vbhtml)文件中; 你也可以从这里改变视图继承,如:


问候.


更新:感谢@ Nick Silberstein他提醒有关领域!他说:

如果你在一个区域内工作,你必须namespaceWeb.configunder下/Areas//Views/而不是 /Views/


@MatthijsWessels不,它不需要重启VS. 只需构建项目即可生效.至少我总是这样做.如果视图已打开,则必须在构建之前关闭该视图,并在构建之后重新打开它.
@vtortola:哪个web.config?Views文件夹中的web.config文件,而不是根文件夹中的主web.config.好?
我希望能节省几分钟的时间来拔出他们的头发并说如果你在一个区域内工作,你必须在/ Areas/ Views /而不是/下的Web.config中添加命名空间.查看/.
注意:我必须在它工作之前重启vs2010.
@Javad_Amiry,啊哈,我做了重建,但没有关闭视图.

3> 小智..:

对于图书馆

@using MyNamespace

对于模型

@model MyModel


@FrenkyB因为这不是C#代码,它是Razor代码..cs文件开头的`using`是一个C#编译器关键字..cshtml文件开头的`@ using`是对Razor模板引擎的提示.

4> Germán..:

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

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

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


RTM中将有一个web.config部分,但我们也想提供一个API来执行此操作,因为许多用户开始偏离配置.所以我们有两种选择!
从ASP.NET MVC 3 Beta开始,此方法不再有效.有一个新的web.config部分,如http://stackoverflow.com/questions/3875207/razor-syntax-using-and-namespace-declarations-fail所述.用于将全局命名空间导入所有视图的AddGlobalImport方法已移至此类System.Web.WebPages.Razor.WebPagesRazorHost

5> k-dev..:

我发现了这个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之前执行


这实际上是一个相当不错的答案,但`Microsoft.WebPages.Compilation.AddGlobalImport`的位置已更改为`System.Web.WebPages.Razor.WebCodeRazorHost.AddGlobalImport`.
使用此方法的最大优点来自于命名空间在所有视图(包括区域内的视图)中可用,同时仅在一个地方声明.

6> 小智..:

一个问题是你必须知道的是,当您通过导入一个命名空间web.configViews的文件夹,即namespace进口JUST了意见,在文件夹中.表示如果要namespace区域视图中导入a ,则还必须namespace在该区域的web.config文件中导入位于区域Views文件夹中的文件;



7> 小智..:

你可以试试这个

@using MyNamespace



8> 小智..:

对于命名空间和库

@using NameSpace_Name

对于模型

@model Application_Name.Models.Model_Name 

用于迭代Razor页面上的列表(您必须使用foreach循环来访问列表项)

@model List

@foreach (var item in Model)
   {  
          
                @item.srno
                @item.name
           
   }

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有