Asp.net mvc ';System.Web.Webpages.Html.Htmlhelper';不包含';Sitecore&x27;

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 我读过的关于类似错误消息的文章,讨论

我在Visual Studio中使用
@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>