Son <%: y <% = lo mismo que bloques de código embebido (expresión)

Habiendo comenzado con MVC 2 noté que en su plantilla inicial usan

 

y estaba seguro de que en MVC 1 era

  

¿Son la misma cosa? Si es así, ¿por qué el cambio de signo igual a dos puntos?

la syntax del colon significa que se codificará html automáticamente: http://haacked.com/archive/2009/09/25/html-encoding-code-nuggets.aspx

No podían codificar html todos los bloques < %= existentes, porque las cosas que ya están codificadas correctamente (que afortunadamente es la mayoría de los proyectos que hay) parecerían extrañas.

< %= se usa 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 una excelente publicación sobre este tema: http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax-for-html-encoding-output-in-asp- net-4-y-asp-net-mvc-2.aspx

Si la salida ya se ha escapado, la doble encoding se puede evitar implementando la interfaz IHtmlString en el objeto devuelto. http://msdn.microsoft.com/en-us/library/system.web.ihtmlstring.aspx

ASP .NET 4 introdujo la syntax < %: que codificó la salida antes de representarla 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 siempre que veas <%: puedes estar seguro de que la salida estará codificada correctamente.