2014-10-30 38 views
0

這是在Sitecore 7.2和C#中。如果字段爲空在sitecore中不顯示

我在1格內使用3個字段,我無法弄清楚如何在字段輸入時顯示每個字段。所以我的田地是牛排,培根和雞蛋。他們都是富文本編輯器。所以我們假設在頁面加載時加載牛排。當用戶將文本輸入培根或雞蛋時,我該怎麼做,以便它變成牛排顯示:無;並顯示用戶輸入該字段的內容?我不確定這是JavaScript還是後端C#的東西。

假設我有一個模板與Sitecore中創建的控件一起工作,所需的字段以及某人在該字段中輸入並將其發佈在HTML中時顯示。

<div class="container"> 
     <div class="steak" id="steak"><sc:FieldRenderer FieldName="Steak" runat="server" /></div> 
     <div class="bacon" id="bacon"><sc:FieldRenderer FieldName="Bacon" runat="server" /></div> 
     <div class="eggs id="eggs"><sc:FieldRenderer FieldName="Eggs" runat="server" /></div> 
</div> 
+0

現在我在這段代碼中沒有任何處理程序,它實現了您所描述的功能 – 2014-10-30 20:02:08

+0

如果字段填充,您是否希望僅顯示字段中的環繞div? – 2014-10-30 21:33:56

+0

假裝牛排類是可見的,而培根和雞蛋隱藏在頁面加載。當培根或雞蛋字段被填充時,它變得可見並且牛排被隱藏 – Keith 2014-10-30 22:10:26

回答

2

如果你不需要class和id屬性(樣式它,而不是爲.container div),你可以使用fieldrenderer的外圍標籤屬性:

<div class="container"> 
    <sc:FieldRenderer FieldName="Steak" EnclosingTag="div" runat="server" /> 
    <sc:FieldRenderer FieldName="Bacon" EnclosingTag="div" runat="server" /> 
    <sc:FieldRenderer FieldName="Eggs" EnclosingTag="div" runat="server" /> 
</div> 

如果字段被填充,則文本會用div標籤包裹,否則不會呈現任何內容。

1

你可以使用一個<asp:PlaceHolder/>控制周圍每個<div> S的包裝來實現:

<asp:PlaceHolder Visible='<%#!string.IsNullOrWhiteSpace(Sitecore.Context.Item["Steak"])%>' runat="server"> 
    <div class="steak"> 
     <sc:FieldRenderer FieldName="Steak" runat="server"></sc:FieldRenderer> 
    </div> 
</asp:PlaceHolder> 

我展示了設置在這裏的ascx標記的知名度,但你可以很容易地做到這一點從代碼隱藏,如果你喜歡。此外,您應理想地檢查頁面編輯模式,以確保在頁面編輯器模式下始終顯示佔位符(這涉及檢查屬性Sitecore.Context.PageMode.IsPageEditorEditing)。

+0

我會嘗試這個,但是當兩個或更多個字段被填充時會發生什麼?如何確保如果培根或雞蛋場已經填充,在牛排仍然隱藏的情況下它是可見的? – Keith 2014-10-31 00:42:03

+0

你會爲每個領域做。也就是說,每個字段都有一個單獨的佔位符。這表示jammykams的回答可能是更好的做法。 – 2014-10-31 07:36:45

+1

由於jammykams指出EnclosingTag是更好的方法,但不會設置類屬性。看看這篇博客文章如何處理。 http://sitecoreclimber.wordpress.com/2014/10/27/how-to-set-css-class-on-fieldrenderer/ – cpp 2014-10-31 15:17:06

相關問題