Tengo una página ASP.Net MVC 3 en la que tengo un control Html.TextAreaPara ver el código a continuación. Si trato de enviar la página a la acción HTTP POST con el texto entre corchetes angulares como: <test>
, aparece una pantalla de error de color amarillo que dice: Se ha detectadoHtmlEncode on Post para ASP.Net MVC 3 Html.TextAreaPara
Un valor Request.Form potencialmente peligroso desde el cliente (RequestText = "").
No entiendo por qué estoy haciendo esto porque me encontré an article by Scott Guthrie que dice la nueva sintaxis <%: %>
en .Net 4, serán automáticamente HtmlEncode el elemento. Dado que estoy usando la sintaxis <%:%> para el control Html.TextAreaFor, pensé que se ocuparía automáticamente de esto y convertiría los corchetes angulares en el correcto "& lt"; y "& gt" strings.
<% 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 - Prefiero no usar el [AllowHtml], ¿no hay una forma de que el .net framework html codifique el texto para mí cuando publique nuevamente en la acción del controlador? –
Lo codifica manualmente en el controlador. Es la capa de datos a la que no desea que se publiquen los datos no codificados. Tienes que manejar esto en el nivel del controlador. –
Básicamente, HTML no puede codificar datos para usted. Puede usar Javascript, pero eso es malo simplemente porque pueden desactivar JS. La única manera segura de hacerlo es a nivel del servidor y no del cliente. –