在MVC 3中使用Razor创建自定义库

3
所以我正在为MVC 3开发一个内部库,并希望将其添加到我的项目中。
我已将其添加到web.config中。我添加了程序集并将其添加到页面->命名空间部分,但是没有起作用。
我尝试重新编译等操作...但Razor根本不喜欢它。这不是智能感知问题...如果我使用我的定义的命名空间,网站无法运行。
我使其工作的唯一方法是使用以下语句:
@using Sample.Helpers

我不想在页面中使用它。我希望能够将其部署到多个项目中,并将其添加到web.config文件中是明智的选择。
有人遇到过这个问题吗?

可能是[Razor语法@using和命名空间声明失败]的重复问题(https://dev59.com/KW865IYBdhLWcg3wUs7z)。 - marcind
2个回答

10

你需要将它添加到~/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中都能正常工作,但是主要问题已经解决。:)谢谢! - Maxime Rouiller

5

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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接