2013-03-21 9 views
35

Auf meiner Haupt-Seite, ich habe den Code @{Html.RenderPartial("_Partial1.cshtml");}, und auf meinem Teil, ich habe einen HTML-String:Wie Render HTML-Zeichenfolge in ASP.NET MVC?

@{ 
    // The string is actually dynamic, not static. This is here for simplicity 
    string abc="<div class=\"error\">abc</div>"; 
} 
@abc 

I zur Ausgabe von abc mit einigen CSS Fehlern Arten wünschen, aber ich habe tatsächlich <div class="error">abc</div> - natürlich keine Stile dort. Wie kann ich es als HTML-Quelltext und nicht als String interpretieren?

+1

http://stackoverflow.com/questions/4281424/asp-net-mvc-razor-output-html-string-non-escaped – adt

+0

Was mit ''

abc
falsch? – alex

Antwort

92

Sie können hierfür die Methode Html.Raw() verwenden.

+5

Das war absolut fantastisch. Tipp: Wenn Sie eine HTML-Datei haben, die Sie rendern möchten, verwenden Sie stattdessen: @ Html.Raw (File.ReadAllText (Server.MapPath ()))) – cgatian

+0

Dies ist eine gefährliche Antwort. Siehe https://en.wikipedia.org/wiki/Cross-site_scripting – Unw0und

+0

Angenommen, ich sollte im Rasierer eine globale Variable definieren und dann @ html.Raw (für diese Variable verwenden, weil ich ein Markup darin definieren und rendern möchte zu sehen. gibt es eine Möglichkeit jemand Wert auf eine Razor Variable aus der URL einstellen kann? ich möchte nur sicherstellen, dass dies zu XSS URL Injektion nicht verwundbar ist .. Danke! – eaglei22