2011-09-02 17 views
24

OK, całkiem nowa w ASP.Net MVC, więc przykro mi, jeśli to głupie pytanie, ale jak mam pokazać wartości ViewBag jako HTML. Na przykład, jeśli ViewBag.SomeMessage zawiera następujący tekst:Jak mogę wyświetlić widok jako HTML?

<h3>Test</h3><p>Test</p><p>Test</p><p>Test</p><p>Test</p><p>TEST</p>

jak pójdę o konieczności rzeczywiście strona czynią to jako zwykły HTML? Czy jest o wiele łatwiejszy sposób osiągnięcia tego, czego kompletnie brakuje?

Pozdrawiam!

Odpowiedz

47

Wszyscy mają rację pod względem używania @Html.Raw(), ale chcę zwrócić uwagę na to, ponieważ może to spowodować, że Twoja strona będzie podatna na luki XSS.

Chciałbym połączyć @Html.Raw(ViewBag.SomeMessage) z Microsoft's Anti-XSS Library, aby się upewnić, że nie wprowadzisz żadnych luk w tym zakresie.

Edit: Zaletą biblioteki Anti-XSS (jeśli nie spojrzał na niego) to ma białą listę zatwierdzonych znaczników (takich jak <b>, <h3>, etc ..), więc jedynie, że zatwierdzony znaczniki będą niekodowane.

Edycja2: Here's an example tego sposobu.

+0

+1 To także dobra rada. – Tejs

+0

bezwstydna autopromocja na temat tego, czym jest xss i używanie anty-xss, a także inne zabezpieczenia przed atakiem hackerów: http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DEV333 –

12

byłoby użyć metody Raw:

@Html.Raw(ViewBag.SomeMessage) 
+0

Do cholery! hahaha – slandau

+2

powracająca przysługa :) haha ​​ – slandau

7

myślę, że można zrobić coś takiego:

@Html.Raw(ViewBag.SomeMessage) 
+0

+1 - NEMESIS! = D Jestem po prostu szybkim drawem McGraw dziś chyba = D – Tejs

6
@Html.Raw(ViewBag.SomeHtmlProperty) 

tym mówi, oto moja Disclaimer: Nie używaj ViewBag . Używaj mocno wpisanych widoków i przeglądaj modele. ViewBag/ViewData jest jak rak dla aplikacji ASP.NET MVC.

1

umieść dane w ViewBag jako ciąg znaków zakodowany w kodzie HTML, który nie powinien być ponownie kodowany.

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

następnie użyć

@ViewBag.myBag 

The documentation dla MvcHtmlString.

Powiązane problemy