Asp.net mvc ';System.Web.Webpages.Html.Htmlhelper';不包含';Sitecore&x27;
我在Visual Studio中使用Asp.net mvc ';System.Web.Webpages.Html.Htmlhelper';不包含';Sitecore&x27;,asp.net-mvc,sitecore,sitecore-mvc,sitecore7.2,Asp.net Mvc,Sitecore,Sitecore Mvc,Sitecore7.2,我在Visual Studio中使用@Html.Sitecore时遇到此错误: “System.Web.Webpages.Html.Htmlhelper”不包含“Sitecore”的定义,并且最佳扩展方法重载“Sitecore.Mvc.HtmlHelperExtensions.Sitecore(System.Web.Mvc.Htmlhelper)”具有一些无效参数` 但是,一旦部署,它就可以毫无问题地运行 我正在使用Sitecore 7.2和MVC 5.1 我读过的关于类似错误消息的文章,讨论
@Html.Sitecore
时遇到此错误:
“System.Web.Webpages.Html.Htmlhelper”不包含“Sitecore”的定义,并且最佳扩展方法重载“Sitecore.Mvc.HtmlHelperExtensions.Sitecore(System.Web.Mvc.Htmlhelper)”具有一些无效参数`
但是,一旦部署,它就可以毫无问题地运行
我正在使用Sitecore 7.2和MVC 5.1
我读过的关于类似错误消息的文章,讨论了view
文件夹web.config
文件的system.web.webPages.razor
部分。这就是它在我的解决方案中的表现
起初我以为我只需要重新启动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的输出时,还有一个我以前没有发现的错误:
实例参数:无法从“System.Web.WebPages.Html.HtmlHelper”转换为“System.Web.Mvc.HtmlHelper”
编辑2
我不再认为这是Sitecore MVC的问题。我在@Html.ActionLink(“xxx”、“xxx”)
中遇到了类似的错误。其他人在VS2012中看到过这个问题,但我使用的是2013
编辑3
这个问题现在有很多答案。我建议您尝试每种方法,因为出现此错误的原因似乎有很多。您说您使用的是MVC 5,但您在提供的代码中引用的是版本3。我的话是这样说的:
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
尝试此操作,然后尝试重新启动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>
您忘了添加
,以便intellisense可以在VS中拾取它。我现在已经解决了这个问题。我只需要安装Visual Studio 2013的更新2。真令人沮丧
感谢StriplingWarrior和Ahmed Okour提供的有用建议。我刚才也遇到了同样的问题。我们发现/views文件夹中缺少web.config。我们从我的其他项目/视图中复制了一个web.config,它解决了这个问题。有时是愚蠢的事情。检查你没有做类似的事情
@Html.Sitecore("placeholdername") // no method
或
你应该在什么时候做
@Html.Sitecore().Placeholder("placeholdername") // this works
我已经在顶部使用了下面的一行,问题已经解决
@inherits System.Web.Mvc.WebViewPage
我在引用中添加了Sitecore.Mvc dll,并将copy local to true添加到视图的web.config下面的namespaces标记下,然后我的问题就解决了。
我应该提到,这是一个标准的Sitecore 7.2安装,因此有
System.Web.WebPages.Razor
和System.Web.Mvc
的程序集绑定重定向(请参阅我对问题的更新)。然而。我确实听从了你的建议,但不幸的是,它们没有起到什么作用。显然也建议注释掉剃刀
。你做过吗?也试过了,但是运气不好。我认为这可能是Sitecore支持的一个例子。没错,但他在razor视图的顶部有使用Sitecore.Mvc的@功能,所以我认为这不会解决问题。我也尝试过将其添加到配置中,但没有帮助。但是感谢您的建议,那么这应该是visual studio的问题,而不是Sitecore,请在不同的机器上尝试这一点。与2013年相比,请遵循Martin关于更新为Update 2的回答。您还需要在您的项目目录中包含适当的App_Config文件(但不一定包含在您的项目中),下面是我的帖子:-我在一篇博客文章中总结了这一点:是的,这个解决方案对我来说也很好。我花了数小时研究web.config文件,但最终更新5解决了问题。/views/web.config
文件已经存在于我的案例中,但谢谢。我还在layouts文件夹中弹出了一个razor文件,这导致了我的不满。因此,为了清楚起见,您需要将所有razor文件保留在“视图”文件夹中,或者在链接任何razor视图的任何位置添加一个web.config。这里解决了类似的问题:首先转到(参考-->添加参考)并添加kendo.Mvc.dll,然后转到视图文件并如上所述编辑webconfig文件
@Html.Sitcore.Placeholder("placeholdername") // Missing parenthesis
@Html.Sitecore().Placeholder("placeholdername") // this works
@inherits 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="Kendo.Mvc.UI" />
<add namespace="Telerik.Reporting" />
</namespaces>