c# - 在 sitecore 中将数据从一个子布局发送到另一个子布局

标签 c# asp.net sitecore sitecore7

我很难在 Sitecore 7 中构建过滤系统。

我有 2 个子布局,位于页面的同一级别。

子布局 A 是一个边栏,其中包含一个复选框列表,并具有一个用所选值填充列表的事件。 子布局 B 显示一组项目。

我想做的是将填充的列表从子布局 A 发送到子布局 B,以便根据用户选择的内容过滤项目列表。 我能够通过 session 传递数据来做到这一点,但这不是处理该数据的最佳方式。

我已经尝试为子布局 A 定义一个属性并在其中加载列表,但我无法从子布局 B 获取子布局 A 的确切实例以读取填充的属性。 此外,尝试 Page.FindControl("IdOfSomeElementFromSublayoutA") 始终在子布局 B 中返回 null。即使我已将 Page 转换为包含两个子布局的 .aspx 页面。

我正在使用 Sitecore 7 更新 2。

非常感谢您的宝贵时间。

最佳答案

最好的方法是使用 Sitecore.Events.Event 类引发(和订阅)事件。您的侧边栏子布局将在按钮的单击事件处理程序中使用类似以下内容引发事件:

Sitecore.Events.Event.RaiseEvent("YourEventName", new YourEventArgsClass { Property = "SomeValue" });

然后在另一个子布局中,您需要进行以下设置才能处理该事件:

public partial class YourOtherSublayout : System.Web.UI.UserControl
{
    private System.EventHandler eventHandlerRef;

    protected void Page_Load(object sender, EventArgs e)
    {
        eventHandlerRef = EventHandlerMethod;
        Sitecore.Events.Event.Subscribe("YourEventName", eventHandlerRef);
    }

    protected void Page_Unload(object sender, EventArgs e)
    {
        if (eventHandlerRef != null)
        {
            Sitecore.Events.Event.Unsubscribe("YourEventName", eventHandlerRef);
        }
    }

    private void EventHandlerMethod(object sender, EventArgs e)
    {
        if (e != null)
        {
            //do stuff here
        }
    }
}

注意:保留 Page_Unload 代码很重要,否则您会看到 EventHandler 方法被多次调用。

关于c# - 在 sitecore 中将数据从一个子布局发送到另一个子布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19495679/

相关文章:

c# - 如何在 C# 中使用 Powershell 创建变量

c# - 在 C# 中显示从 1 到 100 的数字,使得每行以模数 10 结尾

c# - 调用最佳实践

c# - 程序集是否维护其目录结构?

c# - 在 Word 文档中突出显示字符串

c# - 如何从后面的代码向我的 div 添加点击事件?

c# - 如何在 net-core 2.0 中手动解析 JSON 字符串

mongodb - Sitecore 7.5 DMS 以编程方式跟踪目标

indexing - Sitecore solr索引重建和刷新之间的区别

sitecore - 如何忽略 Html.Sitecore().Rendering 中的页面编辑器值