web-dev-qa-db-fra.com

Comment afficher un viewbag en html?

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é!

27
David Archer

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.

58
KallDrexx

Vous utiliseriez la méthode Raw:

 @Html.Raw(ViewBag.SomeMessage)
18
Tejs

Je pense que vous pouvez faire quelque chose comme ça:

@Html.Raw(ViewBag.SomeMessage)
8
slandau
@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.

7
Darin Dimitrov

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.

1
Donat Sasin