当前位置:  开发笔记 > 后端 > 正文

如何向Razor页面添加额外的命名空间而不是@using声明?

如何解决《如何向Razor页面添加额外的命名空间而不是@using声明?》经验,为你挑选了3个好方法。

我需要使用某种魔法来获取pages/namespaceswebconfig中元素的名称空间吗?


    
        
        
        
        
        
        
        
    

以上只是想要的工作.我知道命名空间很好,因为当我把它@using MyCustomHelpers放在页面的顶部时它神奇地起作用.

这样我就可以在Html.SomeFunction()不必将@using所有页面放在首位的情况下开始工作



1> marcind..:

更新:请查看我更新的适用于MVC 3 RC的答案:Razor HtmlHelper Extensions(或其他视图命名空间)未找到

这已经在MVC 3 Preview 1和MVC 3 Beta(今天发布)之间发生了变化.在预览1中,Razor使用了WebForms命名空间配置部分.但是在Beta中,有一个新的配置部分与WebForms分开.您需要将以下内容添加到web.config文件中(或者从模板中的一个全新项目开始):


  
    

请注意,您可能需要关闭并重新打开文件,以便编辑器选择更改.

请注意,web.config中需要进行其他更改才能使Razor在MVC3 Beta中运行,因此您最好查看~\View\Web.configBeta项目模板中附带的文件.


你很可能需要关闭并重新打开.cshtml文件,如果它没有工作或给出错误
FWIW,我发现`pageBaseType ="System.Web.Mvc.WebViewPage"属性也是必需的.我已经更新了你的答案.

2> Buildstarted..:

如果您将名称空间声明放在Web.config根"Views"文件夹和/或当前区域的"Views"文件夹中(取决于您的视图所在的位置) - 它应该按预期工作.



3> 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之前执行

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