在MVC 3中使用Razor的自定义库

Max*_*ler 3 c# asp.net-mvc razor asp.net-mvc-3

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

我把它添加到我的web.config中.我添加了程序集并将其添加到pages - > namespaces部分和... no.不行.

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

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

@using Sample.Helpers
Run Code Online (Sandbox Code Playgroud)

我不想在页面中使用它.我希望能够将它部署到许多项目并将其添加到web.config绝对是可行的方法.

有人遇到过这个问题吗?

Dar*_*rov 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>
Run Code Online (Sandbox Code Playgroud)


Gre*_*g B 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>
Run Code Online (Sandbox Code Playgroud)