HTML Helpers dalla compatibilità con MVC2 Razor
-
26-09-2019 - |
Domanda
si HtmlHelpers esistenti funzionano con il rasoio? Se è così, fa Razor cambiamento nulla sia la progettazione o l'utilizzo di HtmlHelpers?
thx
Soluzione
Sì, aiutanti esistenti funzionano perfettamente bene con il rasoio. Ad esempio:
@Html.ActionLink("foo bar", "foo")
Che Razor cambia è che ora avete la possibilità di definire aiutanti in linea in questo modo:
@helper FooBar(string foo)
{
<div>Hello @foo</div>
}
E l'uso in questo modo:
@FooBar("World")
Per quanto riguarda la classica helper HTML sono interessati, Razor cambia nulla, è solo un motore di visualizzazione in modo da continuare a scrivere i vostri aiutanti come hai sempre fatto:
public static class HtmlExtensions
{
public static MvcHtmlString FooBar(this HtmlHelper htmlHelper, string value)
{
var builder = new TagBuilder("div");
div.SetInnerText(value);
return MvcHtmlString.Create(div.ToString());
}
}
E l'uso in Razor:
@Html.FooBar("some value")
Altri suggerimenti
Razor esegue HTML codifica per impostazione predefinita.
Quindi, se uno dei tuoi MVC2 HtmlHelpers emettono markup, essi potrebbero non funzionare se stanno tornando String
invece di MvcHtmlString
.