Ce n'est pas tout à fait correct. Oui, vous pouvez insérer une chaîne brute mais si vous en avez, "'<>etc...elle sera échappée. La bonne façon est d'utiliser le MvcHtmlString qui autorisera les caractères "illégaux". Par exemple, si vous encodez des données Json ... sans encoder un modèle entier
Daniel B. Chapman
4
Daniel, Html.Raw () "renvoie un balisage qui n'est pas codé en HTML."
Lucas
1
Html.Raw () encode les guillemets ..."myAttr='hello';myInt=10"
Serge
4
Il n'encode PAS les guillemets. En plus de la documentation évidente indiquant qu'il clair comme le jour ( « Cette méthode enveloppe HTML balisage en utilisant la classe IHtmlString, ce qui rend non codé HTML. » ) J'ai aussi testé cela et devis ne sont pas codés.
En plus de l'approche @ Html.Raw (chaîne) déjà mentionnée, si vous générez un MvcHtmlString, il ne sera pas codé. Cela peut être utile lors de l'ajout de vos propres extensions à HtmlHelper, ou lors du retour d'une valeur de votre modèle de vue qui, vous le savez, peut contenir du html.
<!--this will be encoded --><div>@Model.SampleString</div><!--this will not be encoded --><div>@Html.Raw(Model.SampleString)</div><!--this will not be encoded either --><div>@Model.SampleHtmlString</div>
À utiliser @Html.Raw()avec prudence car vous pourriez causer plus de problèmes d'encodage et de sécurité. Je comprends le cas d'utilisation car je devais le faire moi-même, mais soigneusement ... Évitez simplement de laisser passer tout le texte. Par exemple, ne conservez / convertissez que des séquences de caractères spécifiques et codez toujours le reste:
Ensuite, vous avez la tranquillité d'esprit que vous n'avez pas créé de faille de sécurité potentielle et tous les caractères spéciaux / étrangers s'affichent correctement dans tous les navigateurs.
+1 Exactement ce dont j'avais besoin! La chaîne doit encore être encodée mais la ligne renvoyée doit être html. Merci!
Peter
@Html.Raw(Html.Encode(myString).Replace(Html.Encode("\n"), "<br/>"))pour ASP.NET Core
kenjiuno
5
Dans le cas d'ActionLink, il utilise généralement HttpUtility.Encode sur le texte du lien. Dans ce cas, vous pouvez l'utiliser,
HttpUtility.HtmlDecode(myString)
cela a fonctionné pour moi lorsque vous utilisez HtmlActionLink pour décoder la chaîne que je voulais transmettre. par exemple:
"'<>etc...
elle sera échappée. La bonne façon est d'utiliser le MvcHtmlString qui autorisera les caractères "illégaux". Par exemple, si vous encodez des données Json ... sans encoder un modèle entier"myAttr='hello';myInt=10"
la source
En plus de l'approche @ Html.Raw (chaîne) déjà mentionnée, si vous générez un MvcHtmlString, il ne sera pas codé. Cela peut être utile lors de l'ajout de vos propres extensions à HtmlHelper, ou lors du retour d'une valeur de votre modèle de vue qui, vous le savez, peut contenir du html.
Par exemple, si votre modèle de vue était:
Pour Core 1.0+ (et MVC 5+), utilisez HtmlString
puis
la source
À utiliser
@Html.Raw()
avec prudence car vous pourriez causer plus de problèmes d'encodage et de sécurité. Je comprends le cas d'utilisation car je devais le faire moi-même, mais soigneusement ... Évitez simplement de laisser passer tout le texte. Par exemple, ne conservez / convertissez que des séquences de caractères spécifiques et codez toujours le reste:Ensuite, vous avez la tranquillité d'esprit que vous n'avez pas créé de faille de sécurité potentielle et tous les caractères spéciaux / étrangers s'affichent correctement dans tous les navigateurs.
la source
@Html.Raw(Html.Encode(myString).Replace(Html.Encode("\n"), "<br/>"))
pour ASP.NET CoreDans le cas d'ActionLink, il utilise généralement HttpUtility.Encode sur le texte du lien. Dans ce cas, vous pouvez l'utiliser,
HttpUtility.HtmlDecode(myString)
cela a fonctionné pour moi lorsque vous utilisez HtmlActionLink pour décoder la chaîne que je voulais transmettre. par exemple:la source
Vous pouvez également utiliser la méthode WriteLiteral
la source
HTML RAW:
la source