Navigation and service panel


Content

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


Überschreiben der Field-Methode

By Martin Haas on 23. August 2013, No comments

Bei der Field-Methode handelt sich um eine von Sitecore zur Verfügung gestellte MVC-Helper-Methode, welche in Razor-Views mit @Html().Sitecore.Field() angesprochen werden kann. Sie dient dazu, das übergebene Feld korrekt auszugeben und die Page-Editor-Funktionalitäten zur Verfügung zu stellen.

Aus 2 Gründen haben wir uns dazu entschieden, die Methode SitecoreHelper.Field zu erweitern:
1. Es müssen weniger Parameter verwendet werden und wir wollen diese strongly-typed definieren.
2. Wir möchten den Parameter "show-title-when-blank=true" bei einem Feld per Default immer mitgeben.

In diesem Beitrag wird gezeigt, wie diese beiden Punkte umgesetzt wurden.

1. SitecoreHelper.Field() mit strongly-typed Parametern

In der Default-Implementation von Sitecore müssen folgende Parameter mitgegeben werden: Der Name des Feldes, das Item, ein Object mit Parametern. Dies ist eher umständlich und macht die View unübersichtlich, da man das Feld als String mitgibt und dann unter Umständen noch das Item angeben muss. Also haben wir uns dazu entschieden, die Klasse SitecoreHelper um eine neue Field-Methode zu erweitern, welches als Parameter nur noch das auszugebende Feld (strongly-typed) und das Object erwartet:

public static HtmlString Field(
    this SitecoreHelper sitecoreHelper,
    CustomField field,
    object parameters)
{
    Assert.ArgumentNotNull(field, "field");
 
    return sitecoreHelper.Field(field.InnerField.Name, field.InnerField.Item, parameters);
}

2. show-title-when-blank=true per Default mitgeben

Durch den Parameter show-title-when-blank=true sehen die Autoren im Page Editor nicht nur das leere Feld, sondern der Name des Feldes wird ebenfalls ausgegeben. Dies ist hilfreich, um die Übersicht zu behalten.

Mit WebForms ist die Angabe des Parameters show-title-when-blank=true kein Problem und geht recht intuitiv vonstatten. Leider ist dies mit MVC ein bisschen anders, da man ein Object erzeugen muss, welches das Property Parameters (SafeDictionary) enthält. Darin wiederum wird der Parameter show-title-when-blank=true definiert. Da wir diesen Wert auf jedem Feld haben wollen, haben wir dafür wiederum eine neue Field-Methode implementiert. Dadurch kann nun auch nur das Feld mitgegeben werden und der oben genannte Parameter wird per Default gesetzt:

public static HtmlString Field(
            this SitecoreHelper sitecoreHelper,
            CustomField field)
        {
            var parameters = new { Parameters = new SafeDictionary { { "show-title-when-blank", "true" } } };
 
            return sitecoreHelper.Field(field, parameters);
        }

Categories  Best Practice Tags  MVC  Razor View  Field Rendering

No comments

Add your comment

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

*