Navigation and service panel


Content

This text is fallbacked from the German Version. If you need use Google Translate


Wenn Fieldrenderer keine Inhalte haben

By Reto Hugi on 4. September 2012, 2 Comments

Inhalte, die für Autoren nicht Pflicht sind, bedürfen meist bei der Ausgabe zusätzlicher Aufmerksamkeit. Strukturell abhängiges Markup sollte bei fehlenden Inhalten ebenfalls weg gelassen werden.
Es gibt viele Möglichkeiten, die Ausgabe dieser HTML Strukturen zu steuern. Hier ein Lösungsvorschlag mit dem Asp.Net Literal Control.

Nachfolgender Beispielcode soll die Situation veranschaulichen:

<div>
  <p>Mein Text</p>
</div>

Nun muss damit gerechnet werden, dass <p>Mein Text</p> nicht erscheint, da vom Autoren nicht gepflegt. Folgende Ausgabe soll jedoch verhindert werden:

<div>

</div>

Abhilfe schafft nun der Einsatz des Literal Controls...

<asp:Literal Mode="PassThrough" runat="server" Id="SitecoreField">
  <div>{0}</div>
</asp:Literal>

...und der string.Format() Methode im Code Behind:

string value = FieldRenderer.Render(Sitecore.Context.Item, "FieldName");
SitecoreField.Visible = string.IsNullOrEmpty(value) == false;
SitecoreField.Text = string.Format(SitecoreField.Text, value);

(Das Attribut Mode="PassTrough" ist nicht zwingend erforderlich. Es stellt nur sicher, dass auch nicht XHTML oder HTML konforme Tags geschrieben werden. Weitere Informationen gibt's im MSDN.

Wie löst du das Problem? Vorschläge sind via Kommentar willkommen!

Categories  Presentation Tags  Fieldrenderer  Literal  Control

2 Comments

  1. Philipp Nestler
    14. May 2013 at 14:55

    Mit dem FieldRenderer-Attribut "EnclosingTag" lässt sich das elegant lösen:



    Der EnclosingTag wird nur angezeigt, wenn im Feld ein Wert eingetragen wurde.

  2. Reto
    21. May 2013 at 14:08

    Hi Philipp,

    Danke für den Hinweis! Ich wünschte mir, hier würde noch mehr so konstruktiv kommentiert und mitgedacht! Toll :)

    Reto

Add your comment

Your email address will not be published. Required fields are marked *

*