“System.Web.Webpages.Html.Htmlhelper”不包含“Sitecore”的定義
當我使用時,我在 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 中獲取它。
