OK, assez nouveau pour ASP.Net MVC, donc je suis désolé si c'est une question stupide, mais comment puis-je afficher les valeurs d'un ViewBag en HTML. Par exemple, si ViewBag.SomeMessage contient le texte suivant:
<h3>Test</h3><p>Test</p><p>Test</p><p>Test</p><p>Test</p><p>TEST</p>
Comment pourrais-je faire en sorte que la page le rende en HTML normal? Ou existe-t-il un moyen beaucoup plus facile d'y parvenir qui me manque totalement?
À votre santé!
Tout le monde a raison dans l'utilisation de @Html.Raw()
mais je tiens à faire attention à cela, car cela peut rendre votre site vulnérable aux vulnérabilités XSS.
Je voudrais combiner la @Html.Raw(ViewBag.SomeMessage)
avec Bibliothèque Anti-XSS de Microsoft pour m'assurer que vous n'introduisez aucune vulnérabilité à partir de cela.
Éditer: L'avantage de la bibliothèque Anti-XSS (si vous ne l'avez pas consultée) est qu'elle possède une liste blanche de balises approuvées (telles que <b>
, <h3>
, etc.) afin que seules les balises approuvées soient non codées.
Edit2: Voici un exemple de la façon dont cela est fait.
Vous utiliseriez la méthode Raw
:
@Html.Raw(ViewBag.SomeMessage)
Je pense que vous pouvez faire quelque chose comme ça:
@Html.Raw(ViewBag.SomeMessage)
@Html.Raw(ViewBag.SomeHtmlProperty)
Cela étant dit, voici mon avertissement: N'UTILISEZ PAS ViewBag. Utilisez des vues et des modèles de vues fortement typés. ViewBag/ViewData est comme le cancer pour une application ASP.NET MVC.
placez les données dans ViewBag sous la forme d'une chaîne codée HTML qui ne doit plus être codée.
ViewBag.myBag = MvcHtmlString.Create(myCode ?? string.Empty);
puis utilisez
@ViewBag.myBag
documentation pour MvcHtmlString.