@Html.ActionLink("klikni zde","Index")
Co ale dělat, pokud chceme vypsat odkaz jako součást delšího text, například:
Nejste registrován v našem systému, prosím klikněte zde a zaregistrujte se.
Řešením může byt rozdělení textu na části:
<p>Nejste registrován v našem systému, prosím klikněte @Html.ActionLink("zde","Index") a zaregistrujte se.</p>
To je fungující řešení – problém s ním ale nastane v okamžiku, kdy začneme stránku lokalizovat a texty umístíme do resource souborů – obvykle se pak celý text rozdělí na části:
a z nich se pak generuje stránka:
<p>@Resources.FirstPart @Html.ActionLink("zde","Index") @Resources.SecondPart</p>
To ale není příliš pěkné – vznikají zbytečné klíče. Spíše by bylo lepší mít toto:
Pokud ale zapíšeme tento kód:
<p>@string.Format(Resources.Registrace, Html.ActionLink("zde","Index"))</p>
objeví se nám na stránce:
Což není co bychom asi chtěli. Správný zápis totiž je:
<p>@Html.Raw(string.Format(Html.Encode(Resources.Registrace), Html.ActionLink("zde","Index")))</p>
A dostaneme:
Vysvětlení:
- Html.Encode použijeme, abychom správně zakodovali HTML značky v původním textu, tedy aby resource mohl například obsahovat text “Musí být <> od 0”.
- Html.Raw pak brání dalšímu kódování a text je vypsán tak jak je – nedojde tak k Html kodování vloženého odkazu.
Žádné komentáře:
Okomentovat