如何在保存 Sitecore 项目时显示弹出窗口?

2024-01-04

保存 Sitecore 项目时,我尝试显示一个弹出窗口以与用户交互。根据他们更改的数据,我可能会显示一系列 1 或 2 个弹出窗口,询问他们是否要继续。我已经弄清楚如何利用 OnItemSaving 管道。这很简单。我不知道如何显示弹出窗口并对用户的输入做出反应。现在我认为我应该以某种方式使用 Sitecore.Context.ClientPage.ClientResponse 对象。这是一些代码,显示了我正在尝试做的事情:

public class MyCustomEventProcessor
{
    public void OnItemSaving(object sender, EventArgs args)
    {
      if([field criteria goes here])
      {
        Sitecore.Context.ClientPage.ClientResponse.YesNoCancel("Are you sure you want to continue?", "500", "200");
        [Based on results from the YesNoCancel then potentially cancel the Item Save or show them another dialog]
      }
    }
}

我应该使用不同的方法吗?我看到还有 ShowModalDialog 和 ShowPopUp 和 ShowQuestion 等。我似乎找不到任何关于这些的文档。我什至不确定这是否是做这样的事情的正确方法。


该过程是这样的(我应该注意,我从未在 item: saving 事件中尝试过此操作,但是,我相信它应该有效):

  1. item:saving事件,调用客户端管道中的对话处理器,并向其传递一组参数。
  2. 处理器执行以下两件事之一:显示对话框,或消耗响应。
  3. 收到响应后,处理器会使用它,您可以在那里执行操作。

下面是一个演示上述步骤的示例:

private void StartDialog()
{
    // Start the dialog and pass in an item ID as an argument
    ClientPipelineArgs cpa = new ClientPipelineArgs();
    cpa.Parameters.Add("id", Item.ID.ToString());

    // Kick off the processor in the client pipeline
    Context.ClientPage.Start(this, "DialogProcessor", cpa);
}

protected void DialogProcessor(ClientPipelineArgs args)
{
    var id = args.Parameters["id"];

    if (!args.IsPostBack)
    {
        // Show the modal dialog if it is not a post back
        SheerResponse.YesNoCancel("Are you sure you want to do this?", "300px", "100px");

        // Suspend the pipeline to wait for a postback and resume from another processor
        args.WaitForPostBack(true);
    }
    else
    {
        // The result of a dialog is handled because a post back has occurred
        switch (args.Result)
        {
            case "yes":

                var item = Context.ContentDatabase.GetItem(new ID(id));
                if (item != null)
                {
                    // TODO: act on the item

                    // Reload content editor with this item selected...
                    var load = String.Format("item:load(id={0})", item.ID);
                    Context.ClientPage.SendMessage(this, load);
                }

                break;

            case "no":

                // TODO: cancel ItemSavingEventArgs

                break;

            case "cancel":
                break;
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在保存 Sitecore 项目时显示弹出窗口? 的相关文章

  • AWS RDS 的间歇性 SQL 连接问题

    目前 我们的 ASP NET 网站 基于 Sitecore 构建 遇到间歇性问题 该网站看似随机的 15 分钟内无法连接到 SQL Server 15 分钟后 问题自行解决 网站恢复正常 错误信息是 Exception System Dat
  • 如何在数据源位置中使用sitecore查询? (动态数据源)

    是否可以将数据源位置 而不是数据源 设置为 sitecore 查询 我想要做的是将子布局的数据源位置设置为包含它的项目 当前项目 下的文件夹 子布局数据源位置应指向当前项目下的文件夹 所以我尝试将数据源位置设置为query Items 但这
  • 导出用户权限?

    有谁知道有什么方法可以导出用户和角色权限 然后将它们重新导入到 Sitecore 的另一个副本上 我已经进行了搜索 并且禁止编写一些代码来执行此操作 但似乎没有任何立即可用的内容 权限实际上存储在物品本身 而不是角色或用户对象 有两种方法可
  • 我可以使用 FullPath 以编程方式转义 Sitecore 查询中的破折号吗?

    我正在尝试扩展自定义 Sitecore 命令来确定当前项目是否具有与特定模板 ID 匹配的父项目 我知道查询理想情况下应该像这样简单 ancestor templateid 26710865 F082 4714 876B D5E1F3867
  • Sitecore 中子布局的多变量测试

    我过去曾尝试过这个概念 现在对在我公司的 Sitecore 网站上使用多变量测试感兴趣 我认为在很多地方我们绝对可以通过使用 A B 测试来提高销量 运行两个完全不同的模板 看看哪种布局更适合用户 在网站上运行许多不同的子布局 表单 以查看
  • 查找具有特定 OMS 配置文件的 Sitecore 项目?

    我必须在 Sitecore 或者更确切地说 在内容中 中找到在 跟踪 属性中检查了特定 OMS 营销套件 配置文件的所有项目 Tracking 属性似乎存储为 XML 并具有如下原始值
  • Sitecore 页面编辑器 发布与内容相关的项目

    我有一个 产品页面 产品页面映射到 ProductPage Sitecore 项目 网站 页面 产品页面 我在该页面中有一个带有页面编辑器的文本区域 该区域从 Web 数据库中的 产品示例文本 Sitecore 项目的 描述 文本加载文本
  • 将数据从一个子布局发送到 sitecore 中的另一个子布局

    我很难在 Sitecore 7 中构建过滤系统 我有 2 个子布局 位于页面的同一级别 子布局 A 是一个侧边栏 其中包含复选框列表 并具有一个用所选值填充列表的事件 子布局 B 显示一组项目 我想做的是将填充的列表从子布局 A 发送到子布
  • 无法通过 API 访问 Sitecore 项目字段

    我已向现有数据模板添加了一个包含几个新字段的新部分 当以普通用户帐户登录时 这些字段会正确显示 但是 当使用 API 访问字段时 item Fields FieldName 始终返回 NULL 我尝试过的事情 发布项目和相应的数据模板 授予
  • Sitecore 与 LDAP - 以编程方式进行身份验证

    我正在 Sitecore 中创建一个应用程序 我只希望用户可以通过直接 URL 来使用它 我希望针对 LDAP 进行身份验证 我尝试直接进入应用程序并让它重定向到自动登录页面并将我重定向到应用程序 但它没有这样做 相反 它带我进入了 Sit
  • Sitecore - 将网址中的“”重写为“-”,但仍然允许破折号作为合法的项目名称

    我读过六本关于在 Sitecore 中将空间重写为更友好的内容的指南 但所有这些指南都依赖于 Sitecore
  • 如何解决有关 Sitecore 培训网站的登录/数据库丢失错误?

    我在访问 Sitecore 培训网站时收到以下错误 应用程序中的服务器错误 无法打开登录请求的数据库 SiteCoreTrainingSitecore Core 登录失败 用户 sitecore 登录失败 描述 执行当前 Web 请求期间发
  • 如何在所选项目上启用工作流程状态“写入”?

    由于未授予工作流状态写入权限 某些项目没有写入访问权限 当我在 Access Viewer 中单击写入权限时 访问查看器通知我 由于工作流状态写入访问权限 所选用户没有访问权限 不幸的是 我无法通过安全编辑器 手动 设置它 任何人都可以阐明
  • 如何在一个项目的不同版本中包含第 3 方代码

    我手上有一个有趣的问题 但我不太清楚处理它的正确方法 这是特定于 sitecore 的 但我想这个问题的解决方案可以应用于拥有多个运行不同版本框架的网站的任何人 现在我有 3 个独立的网站 运行 Sitecore 作为网站的框架和 CMS
  • iPad 上的 YouTube 嵌入代码

    我正在努力通过添加 iPad 支持来改善网站的体验 这包括对视频的支持 我们的客户正在推动一种用于存储和提供视频的 YouTube 模型 这对我们来说太棒了 我原本计划使用 YouTube 新的 HTML5 支持来实现片段 这将设备检测任务
  • 如何完全禁用 Sitecore Analytics

    我们的生产服务器上遇到 CPU 问题 使用jetbrains cpu profiler进行分析后 我们注意到程序集中的一些函数Sitecore Analytics被处决 这有点奇怪 因为我们在配置文件中禁用了所有与分析相关的配置 调查之后
  • 营销人员的网络表单动态地形成字段条件可见性

    我们使用 WFFM 来创建登陆页面 我们的营销人员很容易使用它 现在 我们正在考虑定制它们 例如 我们有以下需求 在我们的表单上 我们显示居住国家 地区 但是当您选择某些国家 地区时 我们希望再显示一个名为的下拉菜单state provin
  • Sitecore - 如何导入内容?

    因此 我收到了一项新任务 将内容从网站导入到使用 Sitecore CMS 构建的新网站 我的客户基本上正在进行改造 以前的网站是使用非常旧的 CMS 构建的 所有内容都是 HTML 格式 我实际上正在考虑抓取旧网站并将所有内容转储为 cs
  • Sitecore Workbox,显示名称的项目字段?

    默认情况下 Sitecore 工作箱显示项目名称 我想显示 标题 字段 自定义字段 我怎样才能做到这一点 我有一个类似的要求 客户需要 Workbox 显示项目的 路径 而不是其名称 问题是他们的许多物品具有相同的名称 因此很难区分物品 不
  • 继承模板的排序顺序

    使用 Sitecore 6 6 我们正在构建一些继承许多基本模板的模板 这对于重用和标准化我们的代码非常有用 因为所有字段都存储在常量文件中以便于引用 然而 我们似乎无法定义这些继承模板的显示顺序 无论如何 模板似乎都遵循它们添加的原始顺序

随机推荐