2010-04-20 13 views

Respuesta

41

la sintaxis de colon significa que va a ser HTML codifican automáticamente: http://haacked.com/archive/2009/09/25/html-encoding-code-nuggets.aspx

Podrían no sólo html codificar todos los <%= bloques existentes, porque las cosas que ya están codificados correctamente (que es de esperar que la mayoría de los proyectos a cabo allí) se vería extraño.

+0

+1 para la gran lectura que ha vinculado. –

+0

gracias, @bears. El blog de phil es una lectura obligada, especialmente si está trabajando con ASP.NET MVC –

+2

Me encanta la referencia de que el colon es igual pero visto desde un lado :-) –

5

ASP .NET 4 introdujo el <%: sintaxis que codifica la salida antes de mostrarla en la pantalla. ASP MVC ya estaba codificando esto, pero para ser más explícitos, comenzaron a usar también la sintaxis para dejar en claro que cada vez que veas el <%: puedes estar seguro de que la salida estará codificada correctamente.

+2

La palabra clave que falta aquí es "HTML". como en "HTML codificado", no solo "codificado". –

+0

Estoy bastante seguro de que la sintaxis <%: se introdujo antes .net 4. – Losbear

+0

Fue .net 4: http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt -sintaxis-para-html-encoding-output-en-asp-net-4-y-asp-net-mvc-2.aspx –

12

<%= se utiliza para escribir en el búfer de salida.

<%: se utiliza para escribir en el búfer de salida, después de HTML Codificar el contenido ... A menos que se haya implementado la interfaz IHtmlString en el objeto devuelto.

Scott Guthrie tiene un excelente post sobre este tema: http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax-for-html-encoding-output-in-asp-net-4-and-asp-net-mvc-2.aspx

Si la salida ya se ha escapado, doble codificación se puede prevenir mediante la aplicación de la IHtmlString interfaz en el objeto devuelto. http://msdn.microsoft.com/en-us/library/system.web.ihtmlstring.aspx

Cuestiones relacionadas