ASP.NET MVC3, Html.TextAreaFor senza codifica?
-
27-09-2019 - |
Domanda
Come posso usare il Html.TextAreaForwithout codifica esso? So che è un rischio per la sicurezza, ma ho una classe separata che igienizza qualsiasi testo.
Esempio:
@ Html.TextAreaFor (modello => model.PostBodyText, 10, 100, 1)
Sto pensando di utilizzarlo con TinyMCE.
Saluti Raven
Aggiorna Sto utilizzando il nuovo rasoio View Engine.
Soluzione
Si dovrà rotolare il proprio:
<textarea cols="100" id="PostBodyText" name="PostBodyText" rows="10">
@MvcHtmlString.Create(Model.PostBodyText)
</textarea>
Naturalmente, in termini di sicurezza questo potrebbe essere molto pericoloso in quanto il sito è ora vulnerabile agli attacchi XSS. Quindi la domanda è perché avere una classe separata che igienizza tutto il testo quando si può semplicemente fare affidamento sulle aiutanti HTML per fare il lavoro per voi?
Altri suggerimenti
Come opzione alternativa si potrebbe desiderare di utilizzare ValidateInput come descritto qui . Un esempio in stile MVC potrebbe essere:
[ValidateInput(false)]
public ActionResult Method(){
return View()
}
[ValidateInput(false)]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Method(){
// your stuff here
RedirectToAction("index"); // or something
}
Credo che sia più il modo di andare MVC. Ora il controller si dice che c'è un problema di sicurezza in quel metodo di controllo. La vista può essere qualsiasi visualizzazione normale utilizzando HTML aiutanti ecc Si noti che questo consente a tutti i tipi di ingresso, non filtrato. Si lavorerà con TinyMCE se .
// modifica
Woops vedo è necessario aggiungere
<httpRuntime requestValidationMode="2.0"/>
a WebConfig e nelle nuove versioni del MVC. Immagino che potrebbe non essere la strada da percorrere.
Usa [AllowHtml]
sulla proprietà modello. Come ho imparato in in ASP.NET MVC 3, come faccio a ottenere il modello utilizzando Razor sintassi in un Create () Vedi? .