La documentation de MvcHtmlString
n'est pas très éclairante:
Représente une chaîne codée en HTML qui ne doit plus être codée.
Je ne sais pas exactement quelles sont les implications de cela. Il semble que certaines méthodes d'assistance HTML renvoient un MvcHtmlString
, mais plusieurs exemples que j'ai vus en ligne d'assistants personnalisés renvoient simplement une chaîne régulière.
Des questions:
Qu'est-ce qu'un MvcHtmlString
?
Quand dois - je choisir MvcHtmlString
plus string
et vice - versa? Pourquoi?
la source
MvcHtmlString
ne met pas en œuvreIHtmlString
car cela n'existe qu'en 4. La<%:
syntaxe doit être de type canard - elle appellera toujours.ToHtmlString()
avant.ToString()
quelle que soit l'interface.MvcHtmlString.Create
méthode détecte si elleIHtmlString
est disponible et crée dynamiquement la classe retournée pour la prendre en charge si elle l'est: windowsitpro.com/article/net-framework/Encoding-and-Strings/…C'est une réponse tardive, mais si quelqu'un qui lit cette question utilise un rasoir, vous devez vous rappeler que le rasoir code tout par défaut, mais en utilisant
MvcHtmlString
dans vos assistants html vous pouvez dire à rasoir qu'il n'a pas besoin de le coder .Si vous voulez que le rasoir ne code pas une chaîne, utilisez
La décompilation de Raw (), nous montre qu'elle enveloppe la chaîne dans un HtmlString
" HtmlString n'existe que dans ASP.NET 4.
MvcHtmlString était une cale de compatibilité ajoutée à MVC 2 pour prendre en charge à la fois .NET 3.5 et .NET 4. Maintenant que MVC 3 est .NET 4 uniquement, il s'agit d'une sous-classe assez banale de HtmlString vraisemblablement pour MVC 2-> 3 pour la compatibilité avec la source. " source
la source
Une bonne utilisation pratique de ceci est si vous voulez créer vos propres
HtmlHelper
extensions. Par exemple, je déteste essayer de me souvenir de la<link>
syntaxe des balises, j'ai donc créé ma propre méthode d'extension pour créer une<link>
balise:J'aurais pu revenir
String
de cette méthode, mais si j'avais eu ce qui suit se briserait:<%: Html.CssBlock(Url.Content("~/sytles/mysite.css")) %>
Avec
MvcHtmlString
, l'utilisation de l'un<%: ... %>
ou de l' autre<%= ... %>
fonctionnera correctement.la source
Vous utiliseriez un
MvcHtmlString
si vous voulez passer du HTML brut à une méthode d'assistance MVC et que vous ne voulez pas que la méthode d'assistance code le HTML.la source
MvcHtmlString
partir d'une méthode d'assistance HTML?