Mam bezpieczny / zdezynfekowany HTML zapisany w tabeli DB.
Jak mogę zapisać tę treść HTML w widoku Razor?
Zawsze ucieka przed znakami takimi jak <
i do & &
.
Mam bezpieczny / zdezynfekowany HTML zapisany w tabeli DB.
Jak mogę zapisać tę treść HTML w widoku Razor?
Zawsze ucieka przed znakami takimi jak <
i do & &
.
@Html.Raw()
Odpowiedzi:
Załóżmy, że treść znajduje się w ciągu o nazwie
mystring
...Możesz użyć:
Alternatywnie możesz przekonwertować ciąg na
HtmlString
dowolny inny typ implementującyIHtmlString
w modelu lub bezpośrednio w wierszu i używać zwykłego@
:źródło
razor
składnią iHtml.Raw
jest dla mnie zdecydowanie dostępny.W ASP.NET MVC 3 powinieneś zrobić coś takiego:
źródło
Możesz użyć
źródło
Html.Raw()
tam nie działaCzasami użycie surowego HTML może być trudne. Głównie z powodu podatności XSS. Jeśli jest to problem, ale nadal chcesz używać surowego HTML, możesz zakodować przerażające części.
Prowadzi do
źródło
Możesz umieścić swój ciąg w viewdata w kontrolerze w następujący sposób:
A następnie wywołaj te dane w widoku w następujący sposób:
źródło
Oprócz używania
@MvcHtmlString.Create(ViewBag.Stuff)
zgodnie z sugestią Dommera, sugeruję również korzystanie z biblioteki AntiXSS zgodnie z zaleceniami phill http://haacked.com/archive/2010/04/06/using-antixss-as-the-default-encoder-for-asp -net.aspxKoduje prawie wszystkie możliwe ciągi ataku XSS.
źródło
Kompletny przykład użycia funkcji szablonów w RazorEngine (na przykład do generowania wiadomości e-mail):
źródło