Navigation and service panel


Content

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


Verlinktes Bild mit MVC-Helper ausgeben

By Martin Haas on 18. September 2013, No comments

Mittels WebForms konnte man ohne Probleme ein verlinktes Bild durch Web-Controls darstellen. Mit MVC ist diese Möglichkeit nicht gleich offensichtlich, möchte man denn die Funktionalitäten für den Page Editor beibehalten.

Grundsätzlich kann der Beginn eines Feldes in einer Razor View mit der Helper-Methode Html.Sitecore().BeginField(string fieldName, Item item, object parameters) ausgegeben werden. Leider gibt diese Methode bei einem Link auch dessen Text zurück. Da wir aber nur das Bild innerhalb des Linkes haben wollen, müssen wir die Methode also leicht abändern. Wir haben nun die Möglichkeit, genau wie bei der Field-Methode, den SitecoreHelper entsprechend zu erweitern:

public static HtmlString BeginField(
    this SitecoreHelper sitecoreHelper,
    CustomField field,
    bool showText = true,
    object parameters = null)
{
    Assert.ArgumentNotNull(field, "field");

    HtmlString output = sitecoreHelper.BeginField(field.InnerField.Name, field.InnerField.Item, parameters);

    if (showText)
    {
        return output;
    }

    string strippedLink = output.ToString();

    strippedLink = strippedLink.Substring(0, strippedLink.IndexOf(">", System.StringComparison.Ordinal) + 1);

    return new HtmlString(strippedLink);
}

Wie man sieht, wird zuerst der normale Output generiert. Wenn der Text nicht angezeigt werden soll, wird dieser bis zum Ende des Tags gekürzt.

Nun kann das verlinkte Bild folgendermassen ausgegeben werden (mit Hilfe der neuen BeginField- und der Field-Methode):

@Html.Sitecore().BeginField(Model.Link, false)
    @Html.Sitecore().Field(Model.Image)
@Html.Sitecore().EndField()

No comments

Add your comment

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

*