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

Optimizely CMS 12:PowerSlice 5.2.0如何实现单条未使用媒体/块选择删除?

PowerSlice 5.2.0 批量/单条删除功能说明

PowerSlice 5.2.0 原生并不提供复选框批量删除或单条内容删除的功能,它的核心定位是自定义内容集合的筛选与展示,删除这类内容管理操作需要额外开发实现。

单条内容删除的实现思路

你可以在自定义Slice的视图模板中,为每个内容项添加删除按钮:

  • 在Razor视图里,遍历筛选后的内容时,为每个项添加删除按钮,绑定内容的ContentLink;
  • 后端创建对应的Action处理删除请求,调用ContentRepository.Delete(contentLink)完成删除,同时需验证当前用户的删除权限(通过IContentSecurityRepository);
  • 因为你已经筛选出未被引用的内容,删除时无需额外处理引用冲突,但仍建议保留权限校验逻辑。

示例后端删除方法片段:

public async Task<IActionResult> DeleteContent(ContentReference contentLink)
{
    if (!_contentSecurityRepository.HasAccess(contentLink, AccessLevel.Delete, User))
    {
        return Forbid();
    }
    _contentRepository.Delete(contentLink, true);
    return RedirectToAction(nameof(Index));
}

复选框批量删除的实现思路

要实现批量删除,需要前端+后端配合:

  • 前端:在Slice视图的内容列表顶部添加全选复选框,每个内容项前添加单独复选框,收集选中的所有ContentLink;
  • 后端:创建批量删除的Action,接收ContentReference列表,循环调用删除方法,同样需做权限校验;
  • 可以结合你已有的IsNotReferenced逻辑,在删除前二次校验内容是否仍未被引用,避免在展示到删除的间隙出现新引用。

示例前端片段(Razor):

<button id="bulkDeleteBtn" class="btn btn-danger">批量删除选中项</button>
<table>
    <thead>
        <tr>
            <th><input type="checkbox" id="selectAll"></th>
            <th>内容名称</th>
            <!-- 其他列 -->
        </tr>
    </thead>
    <tbody>
        @foreach (var content in Model.Items)
        {
            <tr>
                <td><input type="checkbox" class="contentItem" value="@content.ContentLink"></td>
                <td>@content.Name</td>
                <!-- 单条删除按钮 -->
                <td><a asp-action="DeleteContent" asp-route-contentLink="@content.ContentLink" class="btn btn-sm btn-warning">删除</a></td>
            </tr>
        }
    </tbody>
</table>

注意事项

  • 所有删除操作必须严格校验用户权限,避免越权操作;
  • 批量删除时建议添加确认提示,防止误操作;
  • 删除后需刷新Slice的内容列表,确保展示最新的未被引用内容集合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:17:16