2016-11-14 64 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