【问题标题】:Sitecore 6.5: How to get the current rendering in webforms (non-mvc)Sitecore 6.5:如何在 webforms 中获取当前渲染(非 mvc)
【发布时间】:2016-11-14 19:02:31
【问题描述】:

我有一个渲染,但想将它放置在页面上的不同占位符中。我想根据当前正在处理的渲染的占位符修改 HTML。有没有人遇到过这种情况并解决了它?请分享。

示例:我有图像轮播渲染项。它有自己的 .cs 类,用于创建 HTML。现在,在 Sitecore 内容项的演示详细信息中,我添加了一个带有占位符“zone1”的图像轮播渲染,以及另一个带有“zone2”占位符的图像轮播渲染。基于 zone1 和 zone2,HTML 会有所不同。 我正在覆盖 RenderModel(HtmlTextWriter writer) 来覆盖 HTML。

【问题讨论】:

  • 您对获取当前占位符有疑问吗?在用户控件中?应该是这样的:(占位符)this.Parent.Parent;

标签: sitecore sitecore6


【解决方案1】:

您可以使用渲染参数来实现相同的效果,而不是基于占位符进行硬编码。最好的方法是创建一个用户可以从中选择的值列表,并将其放在渲染模板上。将此添加到您的渲染定义中,您的用户将能够选择其中一个值 - 这可以被视为您的控件的“变体”。在您的代码中,您可以轻松获取此值并根据需要进行调整。

此方法需要您的编辑人员进行一些工作,因为他们需要设置值(您可以使用标准值来提供帮助),但会给您带来灵活性。如果您需要新占位符中的组件或需要进行任何其他更改,这种灵活性将为您节省大量时间并防止硬编码意大利面条。

【讨论】:

  • 感谢您的快速回复,我已经用一个示例更新了问题,如果我添加渲染参数,我将如何获取当前渲染上下文渲染项,以便在 RenderModel(HtmlTextWriter writer) 方法中我可以更新html?
  • 如果您从 Sitecore Webcontrol 继承,您可以通过 Parameters 属性访问它们。
【解决方案2】:

您可以使用以下代码从子布局中获取占位符:

        Sublayout currentSublayout = this.Parent as Sublayout;

        Placeholder currentPlaceholder = currentSublayout.Parent as Placeholder;

要获取占位符的名称,请使用:

currentPlaceholder.Key

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多