2010-09-07 6 views
3

Existe-t-il un moyen d'utiliser une aide html personnalisée avec la syntaxe <%:%>?Aide HTML personnalisée MVC2 et <%: %> Syntaxe

Je sais que si j'utilise le code ci-dessous, ça va, mais il semble pas si élégant et sécurisé.

<%= Html.MyHelper("Some Data")%> 

Je veux dire, utiliser <% =%> sont les meilleures pratiques?

Répondre

3

Demandez à votre aide retourner un MvcHtmlString au lieu d'une chaîne. En outre, s'il vous plaît utiliser <%: autant que possible.

+0

Parfait! C'est tout! – SoaresLuciano

0

Les aides HTML créent du HTML, qui devrait normalement être sorti brut avec <%= %>. Si vous avez utilisé <%: %> pour HTML-échapper la sortie d'une aide HTML, vous verrez la source HTML produite sur la page en tant que texte (par exemple littéralement <input name="foo" value="bar"> à l'écran), ce qui n'est probablement pas ce que vous voulez.

Il est de l'aide de HTML-échapper tout contenu de texte à l'intérieur, pour la sécurité. Oui, si vous écrivez un helper HTML personnalisé et que vous vous trompez, en oubliant les chaînes de codage HTML, votre assistant insère du contenu textuel ou des valeurs d'attribut dans la sortie - vous aurez des failles de sécurité. Vous devez savoir ce que vous faites en vous échappant pour écrire une aide HTML.

Microsoft, malheureusement, apparemment ne sont pas, comme le premier exemple dans leur tutorial échoue complètement:

return String.Format("<label for='{0}'>{1}</label>", target, text); 

Whoops. Espérons que ces chaînes d'identification et de texte ne proviennent pas de données non fiables!

[pourquoi sont des tutoriels Web toujours si lamentablement terribles à échapper à des problèmes?]

Questions connexes