2010-09-26 20 views

Respuesta

8

que llama un HtmlEncode en el valor

Ver ScottGu's blog para obtener más información.

+0

Gracias por la ayuda de todos –

+0

Gracias. A veces me encuentro con una pregunta que tuve pero nunca llegué a preguntar ... –

2

<%: %> sería preferible, ya que automáticamente HTML codifica el valor, sin embargo, sólo funciona en .NET 4.

4

Ellos no son los mismos:

<%=%> is the same as `Response.Write` 
<%:%> adds `Server.HtmlEncode` to `Response.Write` 

Por lo tanto, se prefiere <%:%> (añade desde .NET 4.0), ya que agrega la medida de seguridad de codificación de la salida antes de dar salida a la cadena.

Si está usando .NET 3.5 o anterior, la mejor práctica es usar <%=Server.HtmlEncode(val)%>.

+0

son Server.HtmlEncode y Html.Encode lo mismo? –

+0

@Praveen Prasad: creo que se supone que deben hacer el mismo trabajo, pero en la práctica es un poco diferente (no lo suficiente como para causar problemas, pero uno es más estricto que el otro, si la memoria sirve). – Oded

2
<%: someString %> 

es como

<%= HttpUtility.HtmlEncode(someString) %> 
2

utiliza "<%:" cuando es necesario desinfectar la cadena (es decir, de algo que se inputed por un usuario y pueden ser potencialmente dañino)

Básicamente < & = simplemente escribe como una cadena como lo es para el HTML y <%: es lo mismo que escribir <% = Html.Encode ("algo")%>

+0

<%: %> es generalmente mejor. En el motor Razor view, Microsoft lo hizo para que @ sea equivalente a <%: %>. Y necesita usar @ Html.Raw (value) para obtener el comportamiento equivalente de <%= %>. –