Ho una pagina ASP.Net MVC 3 in cui ho un controllo Html.TextAreaFor, vedere il codice di seguito. Se provo a inviare la pagina all'azione http post con testo in parentesi angolari, come: <test>
, ottengo un errore di schermo giallo con scritto:HtmlEncode on Post per ASP.Net MVC 3 Html.TextAreaFor
Un valore potenzialmente pericoloso Request.Form è stato rilevato dal client (RequestText = "").
Non capisco perché sto ottenendo questo perché ho trovato an article by Scott Guthrie che dice il nuovo <%: %>
sintassi nel .Net 4, verrà automaticamente HTMLEncode l'elemento. Dal momento che sto usando la sintassi <%:%> per il controllo Html.TextAreaFor, ho pensato che si sarebbe occupata automaticamente di questo e convertire le parentesi angolari al valore corretto "& lt"; e stringhe "&".
<% using (Html.BeginForm())
{ %>
<%: Html.ValidationSummary() %>
<h2>Enter a description of the support needed</h2>
<%: Html.TextAreaFor(m => m.RequestText, 4, 90, null) %>
<input type="submit" value="Submit" />
<% } %>
Chase - Preferisco non usare [AllowHtml], non c'è un modo per avere il .net framework html per codificare il testo per me quando ritorna all'azione del controller? –
L'hai codificato manualmente sul controller. È il livello dati a cui non vuoi assegnare dati non codificati. Devi gestirlo a livello di controller. –
Fondamentalmente, HTML non può codificare i dati per te. Puoi usare Javascript, ma è sbagliato semplicemente perché possono semplicemente disabilitare JS. L'unico modo sicuro per farlo è a livello di server e non a livello di client. –