MyN*_*Job 146 razor asp.net-mvc-3
我需要使用某种魔法来获取pages/namespaceswebconfig中元素的名称空间吗?
<pages>
<namespaces>
<add namespace="System.Web.Mvc"/>
<add namespace="System.Web.Mvc.Ajax"/>
<add namespace="System.Web.Mvc.Html"/>
<add namespace="System.Web.Routing"/>
<add namespace="System.Web.WebPages"/>
<add namespace="System.Web.Helpers"/>
<add namespace="MyCustomHelpers"/>
</namespaces>
</pages>
Run Code Online (Sandbox Code Playgroud)
以上只是不想要的工作.我知道命名空间很好,因为当我把它@using MyCustomHelpers放在页面的顶部时它神奇地起作用.
这样我就可以在Html.SomeFunction()不必将@using所有页面放在首位的情况下开始工作
mar*_*ind 163
更新:请查看我更新的适用于MVC 3 RC的答案:Razor HtmlHelper Extensions(或其他视图命名空间)未找到
这已经在MVC 3 Preview 1和MVC 3 Beta(今天发布)之间发生了变化.在预览1中,Razor使用了WebForms命名空间配置部分.但是在Beta中,有一个新的配置部分与WebForms分开.您需要将以下内容添加到web.config文件中(或者从模板中的一个全新项目开始):
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="MyCustomHelpers" />
</namespaces>
</pages>
</system.web.webPages.razor>
Run Code Online (Sandbox Code Playgroud)
请注意,您可能需要关闭并重新打开文件,以便编辑器选择更改.
请注意,web.config中需要进行其他更改才能使Razor在MVC3 Beta中运行,因此您最好查看~\View\Web.configBeta项目模板中附带的文件.
我发现了这个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");
}
}
Run Code Online (Sandbox Code Playgroud)
并将以下代码放在AssemblyInfo.cs中
[assembly: PreApplicationStartMethod(typeof(PreApplicationStart), "InitializeApplication")]
Run Code Online (Sandbox Code Playgroud)
方法InitializeApplication将在global.asax中的Application_Start之前执行
| 归档时间: |
|
| 查看次数: |
47732 次 |
| 最近记录: |