Sitecore MVC with Glass:视图必须来自WebViewPage或WebViewPage <tmodel> </tmodel>

时间:2014-07-18 21:03:58

标签: sitecore glass-mapper sitecore-mvc sitecore7.1

我遵循了Glass教程(http://glass.lu/docs/tutorial/sitecore/tutorial14/tutorial14.html),让Page Editor与Glass和Sitecore MVC合作。

我有一个基本的View Rendering,当我有基本的HTML和Sitecore Helper方法时,它显示正常。

<div>
    @Html.Sitecore().Field("Title")
</div>

当我将其转换为GlassView时,我得到以下异常: -

'/Views/Layouts/SampleContent.cshtml'中的视图必须来自WebViewPage或WebViewPage。

这是我的观点: -

@inherits Glass.Mapper.Sc.Web.Mvc.GlassView<TestMVCContent.Sample_Item>

<div>
    @Editable(x => x.Title)
</div>

我正在运行Sitecore 7.1 - Update-1,并安装了Glass.Mapper.Sc.Mvc-4和Glass.Mapper.Sc.CastleWindsor Nuget软件包。

以下是我的Views文件夹中的web.config的一部分。

<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="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />        
        <add namespace="System.Web.Routing" />
        <add namespace="Sitecore.Mvc" />
        <add namespace="Sitecore.Mvc.Presentation" />        
      </namespaces>
    </pages>
  </system.web.webPages.razor>

我可以看到GlassView继承自WebViewPage ....所以我不知道为什么它不起作用。 我需要在我的视图中注册以使其正常工作吗?

感谢。

1 个答案:

答案 0 :(得分:2)

Glass.Mapper.Sc.Mvc DLL的发行版本3.2.0.35是针对旧版本的System.Web.Mvc和System.Web.WebPages DLL构建的。

这已在最新版本的DLL 3.2.0.41中修复。

对于旧版本,可以通过添加一些程序集绑定重定向来修复此问题:

  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
  </dependentAssembly>