ASP.NET MVC Vorbei Raw HTML von Controller zu View

Ich habe meinen Kopf kratzen über diese für ein paar Tage, und ich bin nicht sicher, ob es ein Problem mit meiner Umgebung oder der code selbst stützt diese auf zu ASP.NET MVC (obwohl ich habe 5 Jahre Erfahrung in C#). Ich bin mit einer der letzten Neuinstallation von Win7x64 und VS 2008-mit allen patches.

Habe ich raw HTML gespeichert in einer Datenbank-Tabelle, die selektiv geladen, der controller basiert auf wenigen Regeln, die ich nicht mehr unter Kontrolle habe. Leider, wenn versuchen, was der Wert in einer Anzeige von Daten in der Kontrolle, wie Z:

ViewData["HTMLData"] = DAO.HTMLDataGet();

Wenn ich sehe die Ausgabe, es ist entkommen/HTML-Codiert werden. Ich habe versucht, über die alle, die nicht scheinen, um dieses Problem zu beheben:

<%: HttpUtility.HtmlDecode(ViewData["HTMLData"].ToString())%>

...

<%: Server.HtmlDecode(ViewData["HTMLData"].ToString())%>

...

<%: Html.Raw(ViewData["HTMLData"].ToString())%>

...er schnappt sich den raw-HTML aus der Datenbank-Tabelle ganz gut, aber es hält Sie gezwungen, gestrahlt Codierung egal was ich versuche. Von was ich gelesen habe auf der MSDN-Website, es war ein Fuß Hinweis: über die Probleme, die von HTML nicht richtig dekodiert, die Leerzeichen enthalten (die Grube). Da ich bezweifle, dass ich der einzige bin, der hat sich diese Wende ich mich an Euch Leute für einige Ideen.

Ich bin zu Durcheinander, mein Weg, obwohl es mit einem regex in der Ansicht zu tun, Seite Aufräumen, dachte aber, es wäre besser, einige Ratschläge von einige andere Leute zuerst, bevor ich brute-force.Vielen Dank im Voraus.

der Inhalt ist html, die wieder in den Blick ?
Ich glaube, ich löste das Rätsel.. ich war mit <%: %> statt <%= %> -- die letztere das Problem behebt. Für Microsoft, das versucht, Dinge einfach zu machen, Sie haben eine Hölle der eine Menge dumme Entscheidungen mit ASP.Net wie diese und andere nutzlose pseudo-markup
Mit was??111Eleven
tatsächlich, Sie haben Recht: es war eine dumme Entscheidung, das war, dass Zitat <%= war die einzige, die verfügbar war, wenn <%: ist die richtige - Verhalten (und wurde Hinzugefügt, viel später), und sollte verwendet werden, fast alle der Zeit. In razor, haben Sie es richtig: @foo ist das gleiche wie <%:foo%>, D. H. codiert ist. Wenn Sie denken, dass <%= ist die vorzuziehen Verhalten, dann: Sie haben das nicht getan annähernd genug, html-Programmierung (nicht speziell ASP.NET), und denken nicht "xss" genug. Schreiben pre-formed html-Code (aus einer Sicht) ist die Ausnahme, nicht der Fall.

InformationsquelleAutor Dave | 2012-08-20

Schreibe einen Kommentar