net asp asp.net webforms .net-4.0 html-encode

asp.net - asp - <%= %>



<%:%> corchetes para codificación HTML en ASP.NET 4.0 (2)

Está confundiendo expresiones de enlace de datos , que tienen la sintaxis <%#%> y se utilizan con Eval (y Bind ) con las etiquetas de salida de respuesta ( <%=%> y <%:%> ) que no se pueden usar con Eval .

Accidentalmente, encontré esta publicación sobre una nueva característica en ASP.NET 4.0: las expresiones incluidas en estos nuevos paréntesis <%: Content %> deben representar como HTML codificado.

He intentado esto dentro de una etiqueta de datos en un FormView como así:

<asp:Label ID="MyLabel" runat="server" Text=''<%: Eval("MyTextProperty") %>'' />

Pero no funciona: la propiedad de texto contiene etiquetas de script (para probar), pero el resultado está en blanco. Usando la manera tradicional funciona:

<asp:Label ID="MyLabel" runat="server" Text=''<%# HttpUtility.HtmlEncode(Eval("MyTextProperty")) %>'' />

¿Qué estoy haciendo mal?

(En una nota al margen: soy demasiado estúpido para encontrar información: Google se niega a buscar esa cosa. La ayuda en línea de VS2010 en MSDN ofrece muchos éxitos, pero nada relacionado con mi búsqueda. Búsqueda de Stackoverflow también. Y yo no sé cómo estas "cosas" (los corchetes que quiero decir) están oficialmente llamados a tener un mejor término de búsqueda.)

¡Cualquier información y enlaces y recursos adicionales son bienvenidos!

¡Gracias por adelantado!


Utilice la sintaxis de enlace de datos de codificación HTML <%#: %> . (Observe el '':'' después del ''#''). Por ejemplo:

Text=''<%#: Eval("PropertyToEval") %>''