Frage

Wie kann ich die Html.TextAreaForwithout es kodiert? Ich weiß, dass es ein Sicherheitsrisiko ist, aber ich habe eine eigene Klasse, dass saniert einen beliebigen Text.

Beispiel:

@ Html.TextAreaFor (Typ => model.PostBodyText, 10, 100, 1)

Ich plane es mit TinyMCE zu verwenden.

Viele Grüße Raven

UPDATE Ich bin die neue Razor Ansicht Engine.

War es hilfreich?

Lösung

Sie müssen Ihre eigene Rolle:

<textarea cols="100" id="PostBodyText" name="PostBodyText" rows="10">
    @MvcHtmlString.Create(Model.PostBodyText)
</textarea>

Natürlich in Bezug auf Sicherheit könnte dies sehr gefährlich sein, wie Sie Ihre Website jetzt anfällig für XSS-Angriffe ist. Die Frage ist also, warum eine eigene Klasse mit, dass saniert den gesamten Text, wenn Sie einfach auf den HTML-Helfer verlassen kann die Arbeit für Sie tun?

Andere Tipps

Als Alternative könnten Sie ValidateInput hier verwenden Wanna . Ein Beispiel in MVC Stil wäre:

[ValidateInput(false)]
public ActionResult Method(){
     return View()
}

[ValidateInput(false)]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Method(){
    // your stuff here
    RedirectToAction("index"); // or something 
}

Ich denke, dass mehr der MVC Weg zu gehen. Jetzt ist Ihr Controller sagt Ihnen, es wird in diesem Controller-Methode ein Sicherheitsproblem. Ihre Ansicht jeder normale Ansicht sein kann mit HTML Helfer usw. Beachten Sie, dass diese alle möglichen Eingabe ermöglicht, nicht gefiltert. Es wird mit TinyMCE arbeiten, obwohl .

// edit

Woops Ich sehe, Sie hinzufügen müssen

<httpRuntime requestValidationMode="2.0"/>

zu webconfig als auch in neuen Versionen von MVC. Denke, es ist vielleicht nicht der richtige Weg sein.

Mit [AllowHtml] auf dem Modell Eigentum. Wie ich lernte in in ASP.NET MVC 3, wie ich auf dem Modell in einem erstellen mit Razor-Syntax get () View? .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top