让我们假设我已经为Link内容类型创建了自己的自定义视图。当用户将2sxc内容应用程序添加到窗格中,然后选择内容类型(链接),然后选择我的自定义视图时,该视图首次启动时,如何检测到a)视图未使用演示项目,而b)视图使用了一个演示项目,并且不是第一次显示该演示项目,而c)却是第一次显示真实用户添加的内容(实体)?
对于a)情况,我已经做了类似的事情:
var link = AsDynamic(Data["Default"]).First();
然后检查它是否为null,但似乎我的View代码从不执行,相反,我只是看到“所选模板不存在演示项目。”
如果我确实分配了一个演示,是否还有一种更优雅的方法来知道我作为Content.First()或Data [“ Default”])的实体。First()是一个演示项目,现在是一个用户创建实体?目前,我正在模板中对EntityId进行硬编码并为此进行测试。
答案 0 :(得分:0)
如果没有演示项目,则模板系统不会渲染模板(除非它是没有内容类型的模板)。 有需要时,我们有两种方法
(Content.EntityGuid == ...)
答案 1 :(得分:0)
在2sxc 10.06中添加了IsDemoItem属性
答案 2 :(得分:0)
如果内容编辑器“隐藏”了唯一的内容项,则匿名用户将看到该项目所在的演示项。从内容编辑器(以及公共/匿名用户)的角度来看,这是令人困惑和意外的。如果其他任何人都可以运行,这里是添加到视图开始的简单代码段。基本上,如果当前用户未登录并且要显示的项目是演示项目,请退出不显示任何内容的视图。
if(!Request.IsAuthenticated) {
if(Content.IsDemoItem ?? false) {
return;
}
}
最好将其放在第一个@ {} Razor区块开始处。
注意:在10.6.x之前的版本中,这不会在2sxc中引发错误(由于“ ?? false”),但也将不起作用。