2016-11-14 66 views
0

我有一个呈现,但希望将其放置在页面上的不同占位符。我想根据正在处理的当前渲染的占位符来修改HTML。有没有人遇到过这种情况并解决了它?请分享。Sitecore 6.5:如何获取当前呈现在webforms(非mvc)

例如:我有图像传送带渲染项目。它有它自己的.cs类创建HTML。现在,在Sitecore内容项目的演示详细信息中,我添加了一个带有占位符“zone1”的图像轮播渲染,另一个图像轮播渲染为“zone2”占位符。基于zone1和zone2的HTML会有所不同。 我重写RenderModel(HtmlTextWriter作家)重写HTML。

+0

是你的问题得到当前占位?在用户控件中?它应该是这样的:(占位符)this.Parent.Parent; –

回答

0

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

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

+0

感谢您快速回复,我用一个例子更新了问题,如果我添加了渲染参数,我将如何获取当前渲染上下文渲染项目,以便在RenderModel(HtmlTextWriter writer)方法中,我可以更新html? – Kdev

+0

如果您从Sitecore Web控件继承,则可以通过'Parameters'属性访问它们。 – Gatogordo

0

您可以用下面的代码得到sublayout占位符:

 Sublayout currentSublayout = this.Parent as Sublayout; 

     Placeholder currentPlaceholder = currentSublayout.Parent as Placeholder; 

获得占位符使用的名称:

currentPlaceholder.Key