Asp.net-Mvc

“System.Web.Webpages.Html.Htmlhelper”不包含“Sitecore”的定義

  • August 3, 2017

當我使用時,我在 Visual Studio 中收到此錯誤@Html.Sitecore

“System.Web.Webpages.Html.Htmlhelper”不包含“Sitecore”的定義,並且最佳擴展方法重載“Sitecore.Mvc.HtmlHelperExtensions.Sitecore(System.Web.Mvc.HtmlHelper)”有一些無效參數。

但是,一旦部署,它就可以毫無問題地執行。

我將 Sitecore 7.2 與 MVC 5.1 一起使用。

在此處輸入圖像描述

我讀過的文章處理類似的錯誤消息,談論文件夾文件的system.web.webPages.razor部分。這就是它在我的解決方案中的顯示方式。Views``web.config

<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" />
 </namespaces>
</pages>

最初我以為我只需要重新啟動VS,但這不起作用。有沒有人有什麼建議。

編輯 這是標準的 Sitecore 7.2 安裝,因此具有以下綁定重定向:

 <dependentAssembly>
   <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" xmlns="urn:schemas-microsoft-com:asm.v1"/>
   <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.1.0.0" xmlns="urn:schemas-microsoft-com:asm.v1"/>
 </dependentAssembly>
 <dependentAssembly>
   <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" xmlns="urn:schemas-microsoft-com:asm.v1"/>
   <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" xmlns="urn:schemas-microsoft-com:asm.v1"/>
 </dependentAssembly>

此外,在查看 Visual Studio 的輸出時,還有一個我之前沒有發現的額外錯誤:

Instance argument: cannot convert from 'System.Web.WebPages.Html.HtmlHelper' to 'System.Web.Mvc.HtmlHelper'

編輯 2

我不再認為這是 Sitecore MVC 問題。我收到類似的錯誤@Html.ActionLink("xxx", "xxx")。其他人在 VS2012 中看到了這個問題,但我使用的是 2013。

編輯 3

這個問題現在有很多答案。我建議嘗試它們中的每一個,因為似乎有很多原因可能會發生此錯誤。

不久前我有同樣的問題。我們發現我們缺少 /views 文件夾中的 web.config。我們從我的其他項目的 /views 中複製了一個 web.config,它解決了這個問題。

試試這個,然後嘗試重新啟動 Visual Studio。

<system.web.webPages.razor>
   <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
   <pages pageBaseType="System.Web.Mvc.WebViewPage">
     <namespaces>
       <add namespace="Sitecore.Mvc" />
       <add namespace="System.Web.Mvc" />
       <add namespace="System.Web.Mvc.Ajax" />
       <add namespace="System.Web.Mvc.Html" />
       <add namespace="System.Web.Routing" />
     </namespaces>
   </pages>
 </system.web.webPages.razor>

您忘記添加 <add namespace="Sitecore.Mvc" />以便智能感知可以在 VS 中獲取它。

引用自:https://stackoverflow.com/questions/24147846