如何在 View 启动时检测 Content 的状态?
How can I detect the state of Content at View startup?
假设我已经为 Link 内容类型创建了自己的自定义视图。当用户将 2sxc 内容应用程序添加到窗格,然后选择内容类型 (Link) 然后我的自定义视图时,当它第一次启动时,我如何检测到 a) 视图不使用演示项vs. b) 视图使用演示项目并显示演示项目 vs. c) 这不是第一次并且有真实用户添加的内容(实体)到位?
我已经为 a) 案例做了这样的事情:
var link = AsDynamic(Data["Default"]).First();
然后检查它是否为空,但看起来我的视图代码从未执行过,相反我只是看到,"No demo item exists for the selected template."
如果我确实分配了一个演示,是否有更优雅的方式来知道我作为 Content.First() 或 Data["Default"]).First() 的实体是演示项目和现在用户创建的实体?目前,我正在对模板中的 EntityId 进行硬编码并对其进行测试。
如果没有演示项,模板系统不会呈现模板(除非它是没有 content-type 的模板)。
当我们需要这个的时候,我们有两种方式
- 在其中一个字段中为演示项指定一个唯一值,并在模板中检查该值
- 检查 GUID 上的 demo-item ID 并检查
(Content.EntityGuid == ...)
IsDemoItem 属性 添加到 2sxc 10.06
如果内容编辑器 "Hides" 是唯一的内容项,则匿名用户将在该项目所在的位置看到一个演示项。从内容编辑者(以及 public/anonymous 用户)的角度来看,这是令人困惑和意外的。如果有人遇到它,这里是添加到视图开头的简单代码片段。基本上,如果当前用户未登录且要显示的项目是演示项目,则退出显示任何内容的视图 w/o。
if(!Request.IsAuthenticated) {
if(Content.IsDemoItem ?? false) {
return;
}
}
最好将它放在第一个 @{} Razor 块的开头附近。
注意:这不会在 10 之前的 2sxc 中抛出错误。6.x(因为“?? false”),但它也不起作用。
假设我已经为 Link 内容类型创建了自己的自定义视图。当用户将 2sxc 内容应用程序添加到窗格,然后选择内容类型 (Link) 然后我的自定义视图时,当它第一次启动时,我如何检测到 a) 视图不使用演示项vs. b) 视图使用演示项目并显示演示项目 vs. c) 这不是第一次并且有真实用户添加的内容(实体)到位?
我已经为 a) 案例做了这样的事情:
var link = AsDynamic(Data["Default"]).First();
然后检查它是否为空,但看起来我的视图代码从未执行过,相反我只是看到,"No demo item exists for the selected template."
如果我确实分配了一个演示,是否有更优雅的方式来知道我作为 Content.First() 或 Data["Default"]).First() 的实体是演示项目和现在用户创建的实体?目前,我正在对模板中的 EntityId 进行硬编码并对其进行测试。
如果没有演示项,模板系统不会呈现模板(除非它是没有 content-type 的模板)。 当我们需要这个的时候,我们有两种方式
- 在其中一个字段中为演示项指定一个唯一值,并在模板中检查该值
- 检查 GUID 上的 demo-item ID 并检查
(Content.EntityGuid == ...)
IsDemoItem 属性 添加到 2sxc 10.06
如果内容编辑器 "Hides" 是唯一的内容项,则匿名用户将在该项目所在的位置看到一个演示项。从内容编辑者(以及 public/anonymous 用户)的角度来看,这是令人困惑和意外的。如果有人遇到它,这里是添加到视图开头的简单代码片段。基本上,如果当前用户未登录且要显示的项目是演示项目,则退出显示任何内容的视图 w/o。
if(!Request.IsAuthenticated) {
if(Content.IsDemoItem ?? false) {
return;
}
}
最好将它放在第一个 @{} Razor 块的开头附近。
注意:这不会在 10 之前的 2sxc 中抛出错误。6.x(因为“?? false”),但它也不起作用。