You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

2SXC-DNN配置:允许页面编辑者查看草稿/隐藏项

问题描述
  • 需求:允许特定用户/用户组添加页面内容并查看隐藏项
  • 现状:
    • 原配置的「Editors」角色(含应用及内容类型CRUD权限)失效,非管理员用户的Content变量为空,触发模板渲染错误
    • 当前视图绑定单个未发布演示内容项,仅发布时编辑者可查看编辑;未发布时因Content为空抛出Cannot perform runtime binding on a null reference错误
    • 已尝试配置应用权限、内容类型权限均无效;2sxc 12.2.1版本中配置应用权限可实现需求,但15.6.0版本无效果
  • 核心待解决问题:
    1. 配置权限,让有页面编辑权限的用户能查看未发布项
    2. 修改模板增加空值判断,避免空引用错误
    3. 确保未发布项对未认证/只读用户隐藏
解决方案

1. 适配2sxc 15.6.0的权限配置

  • 进入2sxc应用管理后台,打开目标应用的「Permissions」设置
  • 给「Editors」角色配置以下权限:
    • 应用层面:勾选View Drafts(查看草稿)、Edit Content(编辑内容)权限
    • 内容类型层面:针对目标内容类型,勾选View(包含草稿)、Edit权限
  • 补充页面权限配置:在Dnn页面设置中,确保「Editors」角色拥有Edit Page权限;同时在2sxc视图设置里,开启「Allow Edit for Page Editors」选项
  • 注意:2sxc 15+版本权限粒度更严格,需同时保证应用权限、内容类型权限、页面权限三者匹配,避免单一配置遗漏

2. 模板空值判断优化

以Razor模板为例,添加Content变量的空值校验逻辑:

@if(Content != null) {
    // 原内容渲染逻辑示例
    <h1>@Content.Title</h1>
    <div>@Content.Description</div>
} else {
    // 仅对编辑者显示友好提示,普通用户无输出
    @if(User.IsInRole("Editors") || User.IsSuperUser) {
        <p>提示:当前无已发布内容,您可点击编辑按钮添加或编辑草稿</p>
    }
}

核心逻辑:先判断Content是否为空,非空时才执行渲染;针对编辑者用户显示提示,普通用户无内容输出

3. 未发布内容的隐藏控制

  • 依赖2sxc内置权限机制+模板逻辑实现:
    • 未认证用户:Content为空时不输出任何内容,且无编辑入口
    • 只读用户:即使Content为空,也不显示草稿内容或编辑提示
  • 额外验证:确保未发布内容的状态为「Draft」,2sxc默认会对未认证/只读用户隐藏草稿内容

内容的提问来源于stack exchange,提问作者M Vaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 08:07:09