我们有一个使用Glass.Mapper的Sitecore网站。我们还有一个简单的两步工作流程,"草稿>准备发布"在所有项目上。有全局项目,可以放在页面上的促销。作者创建宣传片,然后创建页面并将宣传片放在页面上。
如果页面已发布但促销尚未发布,则该页面将返回此错误: 类型' OurSite.Sitecore.Models.IPromo'上的构造函数没找到。
由于作者未能发布新促销的情况是真实的,我想防止发生此错误,以便页面只是在没有促销的情况下呈现。想法?
答案 0 :(得分:1)
另一种选择是验证getRenderer管道中组件的数据源。 Marek用一个可靠的解决方案在博客上写了这篇文章:
http://www.skillcore.net/sitecore/sitecore-automated-validation-of-mvc-rendering-datasource
这也处理了没有数据源的组件(即项目被删除)破坏了PageEditor页面的情况。
话虽如此,我也相信此外你也应该有一个合适的例外策略。 Jim Noellsch发布的链接非常好。我记得Charlie Turano的这个也是一个坚实的人:
http://www.hhogdev.com/blog/2015/june/mvc-rendering-exception-handler.aspx
答案 1 :(得分:0)
假设IPromo
是一个接口,请将其转换为类模型Promo
。如果这是MVC解决方案,您还可以覆盖OnException
方法以安静地抑制缺少的内容。