我需要使用某种魔法来获取pages/namespaces
webconfig中元素的名称空间吗?
以上只是不想要的工作.我知道命名空间很好,因为当我把它@using MyCustomHelpers
放在页面的顶部时它神奇地起作用.
这样我就可以在Html.SomeFunction()
不必将@using
所有页面放在首位的情况下开始工作
更新:请查看我更新的适用于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.config
Beta项目模板中附带的文件.
如果您将名称空间声明放在Web.config
根"Views"文件夹和/或当前区域的"Views"文件夹中(取决于您的视图所在的位置) - 它应该按预期工作.
我发现了这个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之前执行