Comment afficher un viewbag en html?

OK, tout à fait nouveau pour ASP.Net MVC, donc je suis désolé si c'est une question idiote, mais comment faire pour montrer les valeurs D'un ViewBag comme 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 pour que la page soit rendue comme HTML normal? Ou y a-t-il un moyen beaucoup plus simple d'y arriver que je ne vois pas?

Cheers!

25
demandé sur David Archer 2011-09-02 19:32:52

5 réponses

tout le monde est correct dans l'utilisation de @Html.Raw() mais je tiens à souligner d'être prudent avec cela, car il peut rendre votre site sensible aux vulnérabilités XSS.

je voudrais combiner l' @Html.Raw(ViewBag.SomeMessage) Microsoft Anti-XSS Library assurez-vous de ne pas introduire des vulnérabilités.

Edit: L'avantage de la bibliothèque Anti-XSS (si vous ne l'avez pas regardée) est qu'elle a une liste blanche de markups approuvés (comme <b>, <h3>, etc.. de sorte que les approuvé les majorations seront non codée.

Edit2: Voici un exemple de la façon de faire.

51
répondu KallDrexx 2011-09-02 15:45:08

vous utiliseriez le Raw méthode:

 @Html.Raw(ViewBag.SomeMessage)
14
répondu Tejs 2011-09-02 15:34:35

je pense que vous pouvez faire quelque chose comme ceci:

@Html.Raw(ViewBag.SomeMessage)
8
répondu slandau 2011-09-02 15:34:40
@Html.Raw(ViewBag.SomeHtmlProperty)

ceci étant dit, Voici mon avis de non-responsabilité: N'utilisez pas de viseur. Utilisez des vues et des modèles de vue fortement dactylographiés. ViewBag/ViewData est comme le cancer pour une ASP.NET application MVC.

7
répondu Darin Dimitrov 2011-09-02 15:34:50

mettre des données dans ViewBag comme une chaîne de caractères codée HTML qui ne devrait pas être codée à nouveau.

ViewBag.myBag = MvcHtmlString.Create(myCode ?? string.Empty);

puis utilisez

@ViewBag.myBag

documentation pour MvcHtmlString.

1
répondu Donat Sasin 2017-04-11 07:29:04