mvc entre engine diferencia aspx asp.net .net webforms-view-engine

asp.net - entre - razor vs aspx



.NET "código nugget bloques"? (4)

Así que en .NET tenemos ...

<%= <%: (new to .NET 4 - syntactic sugar for HTML encoding) <%# <%@

¿Qué son exactamente estos?

Y hay mas ¿Hay una lista exhaustiva de estos y de lo que están en cualquier lugar? Es difícil saber qué buscar, ni siquiera escuché el término "bloques de nugget de código" hasta esta noche cuando descubrí lo que <%: era.


A menudo se denominan nuggets de código, pero ese término no existe en la documentación de Microsoft. Microsoft los llama expresiones en línea como en Introducción a las expresiones en línea ASP.NET en .NET Framework . Proporcionan instrucciones del marco ASP.NET sobre cómo procesar la declaración dentro de esos símbolos (<%%>). Hasta que supe su nombre, sí, fue un poco más difícil preguntarlo en la comunidad. No estoy seguro de una lista "exhaustiva", pero hay un par más de lo que ha especificado. A continuación se muestra la lista de otros nuggets de código y sus usos y ejemplo de ejemplo.

Símbolo - Nombre - Descripción - ej. (Formato)

<% - nugget de código estándar: indica que las siguientes declaraciones son declaraciones de C #. Habrá que seguir las reglas de sintaxis de C #. p.ej.

<% string[] cities = { ""London"", ""New York"", ""Paris"" }; string myCity = cities[new Random().Next(cities.Length)]; Response.Write(myCity);%>

<%= Pepita de código de contenido: similar a cn estándar, la diferencia es que el resultado devuelto se inserta directamente en la respuesta al navegador sin tener que usar Response.Write . p.ej.

<%=textBox.Text%>

(NO SE RECOMIENDA, incluye el riesgo de ataque de inyección html. Si la entrada en el cuadro de texto es algo como " < button type = submit > Submit</button > ", se agregará un botón a la página. Por supuesto, habrá validación, Pero espero que el punto sea claro.

<%: Pepita de código codificado - Similar a <% =, pero la respuesta está codificada en HTML. p.ej. Name is <%:textBox.Text%> (cualquiera que sea la entrada en el cuadro de texto, se muestra. Si la entrada es algo como " < button type = submit > Submit</button > ", la salida sería "El nombre es <button type = submit> Submit</button> ".

<%# Nugget de código de enlace de datos --Deota un nugget de código de enlace de datos, utilizado para referirse al objeto de datos actual. Solo se puede usar con controles de base de datos como repetidor, etc.

<%#: Enlace de datos codificados: indica un nugget de código de enlace de datos codificado donde se codifica el valor enlazado de datos. p.ej.

<asp:Repeater ItemType = ""System.String"" SelectMethod = ""GetCities"" runat = ""server"> <ItemTemplate> <li > <%# Item % > </li> </ItemTemplate> </asp:Repeater>

(Si se usa codificado ( <%#: :), muestra literales sin interpretaciones, se recomienda.) "

<%$ Pepita de código de propiedad: se utiliza para referirse al valor de configuración, como los definidos en Web.config.

<asp:Literal Text = " < %$ AppSettings: cityMessage % > " runat = "server" />

(Recupera el valor de la clave cityMessage del archivo de configuración).

<%@ - Directiva de página: se usa para configurar el formulario web (o página de control o maestra, según el tipo de directiva, por ejemplo,

<%@ Page.. <%@ Master

Toda la información y los ejemplos mencionados anteriormente son del libro Pro ASP .NET 4.5 de Adam Freeman, Capítulo 12. Excelente imo del libro.


Es difícil ser claro y definitivo acerca de los nombres porque Microsoft a menudo no es claro ni definitivo. Por ejemplo, no sé cuál es el nombre de <%: ... %> .

También es difícil estar seguro de cuál es la documentación actual y Microsoft está trabajando para resolver ese problema.

La siguiente tabla hace referencia cruzada a lo que se encuentra en Introducción a las expresiones en línea ASP.NET en .NET Framework con lo que se encuentra en Sintaxis de página ASP.NET .

Syntax | Support Article | Docs <% ... %> | Embedded Code Block | inline code (see Code Render Blocks) <%= ... %> | Inline Expression Block | inline expression (see Code Render Blocks) <%@ ... %> | Text Template Directive | Text Template Directive <%# ... %> | Data-Binding Expression | Data-Binding Expression <%$ ... %> | Expression Builder | ??? <%-- ... %> | Server-Side Comments | Server-Side Comments <%: ... %> | N/A | N/A

<% ...%>: Bloque de código incrustado

El Bloque de código incorporado proporciona compatibilidad con versiones anteriores de ASP clásica y también es utilizado por PHP y JSP. Como están incrustados en HTML, tienden a hacer que el código sea difícil de leer y mantener.

<% = ...%>: Bloque de expresión en línea

Un bloque de expresión en línea se ejecuta como si fuera un parámetro de una declaración Response.Write (...).

<%: ...%>: ???

Lo mismo que <% = Server.HtmlEncode (...)%> donde ... es el parámetro de Server.HtmlEncode.

<% @ ...%>: Directiva de plantillas de texto

La Directiva de plantilla de texto especifica la configuración utilizada por la página y por los compiladores de control de usuario cuando procesan páginas de formulario web ASP.NET (.aspx) y archivos de control de usuario (.ascx).

<% # ...%>: Expresión de enlace de datos

La expresión de enlace de datos enlaza una propiedad de control del servidor a un origen de datos.

<% $ ...%>: Generador de expresiones

Expression Builder establece el valor de la propiedad de un control al valor en la configuración de una aplicación o en el archivo de recursos. Una expresión del generador de expresiones consiste en:

Expression Prefix: Expression Value

Donde el Prefijo de Expresión es el tipo de expresión como un nodo en el archivo Web.config y el Valor de Expresión es el nombre de una clave en el nodo. El resultado es el valor especificado para la clave.

<% - ...%>: Bloque de comentarios del lado del servidor

El bloque de comentarios del lado del servidor permite colocar comentarios en cualquier lugar en HTML, excepto en bloques de código.

Sintaxis Miscelánea

Lo siguiente también se encuentra en la página de documentación de Microsoft Docs, en caso de que eso ayude.

Syntax | Docs <tagprefix:tagname runat="server"/> | Custom Server Control <object id="id" runat="server"/> | Server-Side Object Tag <!-- #include file|virtual="filename" --> | Server-Side Include Directive


Estas <%@ son directivas. Para obtener una lista y documentación exhaustiva, consulte MSDN .

Cuando se usan, las directivas pueden ubicarse en cualquier lugar en un archivo .aspx o .ascx, aunque la práctica estándar es incluirlas al principio del archivo. Cada directiva puede contener uno o más atributos (emparejados con valores) que son específicos de esa directiva.

Los <% son bloques de script. Aquí hay una buena descripción en MSDN

Un bloque de código incrustado es un código de servidor que se ejecuta durante la fase de procesamiento de la página. El código en el bloque puede ejecutar sentencias de programación y llamar a funciones en la clase de página actual.

El bloque <%# se usa normalmente en los controles enlazados. Vea este breve article para más información.


No estoy seguro de que todas estas etiquetas de WebForm tengan un nombre colectivo adecuado, pero todas deberían estar cubiertas en la Sintaxis de página ASP.NET .

Hay otro que no está en la lista, Expresiones de ASP.NET :

<%$ expressionPrefix: expressionValue %>