【问题标题】:Sitecore MVC with Glass: The view at must derive from WebViewPage, or WebViewPage<TModel>带有 Glass 的 Sitecore MVC:必须从 WebViewPage 或 WebViewPage<TModel> 派生的视图
【发布时间】:2014-07-18 21:03:58
【问题描述】:

我按照 Glass 教程 (http://glass.lu/docs/tutorial/sitecore/tutorial14/tutorial14.html) 让页面编辑器使用 Glass 和 Sitecore MVC。

我有一个基本的视图渲染,当我有基本的 HTML 和 Sitecore 辅助方法时,它显示得很好。

<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....所以我不知道为什么它不起作用。 我需要在我的视图中注册什么东西才能让它工作吗?

谢谢。

【问题讨论】:

  • 你能在你的views文件夹中分享web.config的部分吗?
  • 我已经用这个更新了帖子。
  • 看起来正确,也许你可以创建一个新的 MVC 4 项目,然后复制 'Views' web.config 以覆盖你当前的 web.config,你需要添加 在命名空间内。

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


【解决方案1】:

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>

【讨论】:

    猜你喜欢
    • 2011-12-28
    • 2013-07-29
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 2013-06-05
    • 2016-02-05
    • 1970-01-01
    相关资源
    最近更新 更多