【问题标题】:Custom libraries with Razor in MVC 3MVC 3 中带有 Razor 的自定义库
【发布时间】:2011-06-10 13:05:58
【问题描述】:

所以我正在为 MVC 3 开发一个内部库,我想将它添加到我的项目中。

我将它添加到我的 web.config 中。我添加了程序集并将其添加到 pages -> namespaces 部分并且......不。没用。

我尝试过重新编译等...但 Razor 根本不喜欢它。这不是智能感知问题...如果我使用我定义的命名空间,网站将无法运行。

我使它起作用的唯一方法是使用以下语句:

@using Sample.Helpers

我不想在页面中使用它。我希望能够将它部署到许多项目中,并将其添加到 web.config 绝对是要走的路。

有人遇到过这个问题吗?

【问题讨论】:

标签: c# asp.net-mvc asp.net-mvc-3 razor


【解决方案1】:

Razor 使用不同的配置部分

 <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="Foo.Bar">
      <namespaces>
        <add namespace="Foo.FooBar" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

【讨论】:

    【解决方案2】:

    您需要将其添加到 ~/Views/web.config,因为 Razor 使用不同的配置部分:

    <system.web.webPages.razor>
        <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <pages pageBaseType="System.Web.Mvc.WebViewPage">
            <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="YourNamespaceContainingTheHelperMethod" />
            </namespaces>
        </pages>
    </system.web.webPages.razor>
    

    【讨论】:

    • 我的朋友解决了我的问题。我将它添加到主 web.config 中,但它根本不起作用。现在我需要想办法将它添加到我的 NuGet 包中,以便它可以在 WebForm 视图引擎和 Razor 中运行,但主要问题已解决。 :) 谢谢老兄!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多