Asp.net MVC 5 无法在 class 库项目内的 Razor 视图中使用 Html 助手

Asp.net MVC 5 cannot use Html Helpers in a Razor view inside a class library project

我正在使用 Asp.Net MVC 5 制作插件架构应用程序,因此我创建了一个 class 库项目,其中将包含一些控制器和一些嵌入式 Razor 视图。一切正常我参考了以下 Dlls`System.Web.Mvc/System.Web.Optimazations/System.Web.Razor/System.Web.WebPages/System.Web.WebPages.Razor/System.Web.helpers.

我添加了一个 web.config 文件,它包含以下内容:

<?xml version="1.0"?>

<configuration>
  <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
  </configSections>

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.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.Optimization"/>
        <add namespace="System.Web.Routing" />
        <add namespace="Plugin_1" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

  <appSettings>
    <add key="webpages:Enabled" value="false" />
  </appSettings>

  <system.web>
    <compilation debug="true" targetFramework="4.5.2" >


    </compilation>

    <httpRuntime targetFramework="4.5.2" />
    <pages>
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Optimization"/>
        <add namespace="System.Web.Routing" />
        <add namespace="Plugin_1" />
        <add namespace="Kendo.Mvc.UI"/>
      </namespaces>
    </pages>
    <httpModules>
      <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
    </httpModules>
  </system.web>

  <system.webServer>
    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
    </handlers>
  </system.webServer>
</configuration>

我可以使用@model 关键字等,但我不能使用像“@Html.ActionLink() 等这样的html 助手,@Html 无法被vs 2015 识别!! 任何人都可以帮助我,我在 StackOF 上看到了一些类似的问题,但它没有帮助。谢谢。

要使 Intellisense 显示 ASP.NET MVC 特定属性,您需要将 class 库的输出路径更改为 bin:

右键单击项目 -> 属性 -> 生成 -> 将输出路径更改为 "bin/"

现在,如果您在 class 库中打开 Razor 文件,您将获得 Html.ActionLink.

等内容的智能感知

您需要将 Razor 引用添加到项目和 Web 配置中