项目不可用时出现 Sitecore Glass.Mapper 错误

Sitecore Glass.Mapper error when item is not available

我们有一个使用 Glass.Mapper 的 Sitecore 网站。我们还有一个简单的两步工作流程,"Draft > Ready for publish" 所有项目。有全局项目,它们是可以放置在页面上的促销。作者创建宣传片,然后创建页面并将宣传片放在页面上。

如果页面已发布但促销尚未发布,页面 returns 会出现此错误: 未找到类型 'OurSite.Sitecore.Models.IPromo' 的构造函数。

由于作者未能发布新宣传片的情况是真实存在的,因此我想防止此错误发生,以便页面只呈现没有宣传片。想法?

假设 IPromo 是一个接口,将其转换为 class 模型 Promo。如果这是一个 MVC 解决方案,您还可以覆盖 OnException 方法以安静地抑制丢失的内容。

另一种选择是验证 getRenderer 管道中组件的数据源。 Marek 已经在博客上写了一个可靠的解决方案:

http://www.skillcore.net/sitecore/sitecore-automated-validation-of-mvc-rendering-datasource

这也处理了没有数据源的组件(即项目被删除)在 PageEditor 中破坏页面的情况。

话虽这么说,但我也认为您还应该有适当的异常策略。 link Jim Noellsch 发布的内容很好。我记得查理·图拉诺 (Charlie Turano) 的这首曲子也很不错:

http://www.hhogdev.com/blog/2015/june/mvc-rendering-exception-handler.aspx