La página de formulario web ASP.NET es un archivo de texto declarativo con una extensión de .aspx. Además del contenido estático, puedes marcar elementos usando ocho sintaxis diferentes. Esta sección revisa estos elementos de sintaxis y proporciona algunos ejemplos de cómo usarlos.
Sintaxis para renderizar código: <% %> y <%= %>
Los bloques de renderizado de código están representados por elementos <% ... %>, que le permiten controlar el contenido renderizado y se ejecutan durante la fase de visualización de la página de formularios web. ejecución. El siguiente ejemplo demuestra cómo usarlos para recorrer el contenido de HTML.
<%@ Idioma de la página="VB" %>
<html>
<cuerpo>
<% Atenuar I como entero
Para I = 0 a 7 %>
<font size="<%=I%>"> ¡Hola mundo! </font> <br>
<%Siguiente %>
</cuerpo>
</html>
<%... %> solo se ejecuta, mientras que la expresión que contiene el signo igual (<%=... %>) calculará el resultado cuando se muestre el contenido. Por lo tanto, <%="Hello World" %> muestra el mismo resultado que el código C# <% Response.Write("Hello World" %>);
Tenga en cuenta que, dado que el lenguaje requiere el uso de marcadores para terminar o separar declaraciones (como el punto y coma; en C#), es importante colocar estos marcadores correctamente.
El código C#
<% Response.Write("Hello World" %> requiere un punto y coma para terminar la declaración.
<%="Hola Mundo"; %> Error: Causa "Response.Write("Hola Mundo";);".
<%="Hello World" %> No se requiere punto y coma.
Sintaxis para declarar código: <script runat="server">
El bloque de declaración de código define las variables miembro y los métodos que se compilarán en la clase Page. Estos bloques se pueden utilizar para crear una lógica de página y navegación. El siguiente ejemplo demuestra cómo definir el método Subtract en el bloque <script runat="server"> y luego llamarlo en la página.
<html>
<lenguaje de escritura="VB" runat=servidor>
Función Restar(Num1 Como Entero, Num2 Como Entero) Como Entero
Devolver Núm1-Núm2
Función final
</guión>
<cuerpo>
<%
Número tenue como entero = 100
Hacer mientras número > 0
Response.Write("Valor: " & Número & "<br>")
Número = Restar(Número, 1)
Bucle
%>
</cuerpo>
</html>
Tenga en cuenta: a diferencia de ASP, en ASP las funciones deben definirse en el bloque <% %>; todas las funciones y variables globales deben definirse utilizando la etiqueta <script runat=server>. La declaración de función en el bloque <% %> generará un mensaje de error de compilación de sintaxis.
Sintaxis de control del servidor
Los controles de servidor ASP.NET personalizados permiten a los desarrolladores de páginas generar dinámicamente interfaces de usuario HTML y responder a las solicitudes de los clientes. Se expresan en archivos utilizando una sintaxis declarativa basada en marcas. Estas etiquetas se diferencian de otras etiquetas en que contienen un atributo "runat=server". El siguiente ejemplo demuestra cómo utilizar el control de servidor <asp:label runat="server"> en una página ASP.NET. Este control corresponde a la clase Label en el espacio de nombres System.Web.UI.WebControls.
Al agregar una etiqueta con el ID "Mensaje", se puede crear una instancia de Etiqueta en tiempo de ejecución:
<asp:label id="Message" font-size=24 runat="server"/>
Podemos usar este nombre para acceder al control. . El siguiente código establece la propiedad Texto del control.
Mensaje.Text = "Bienvenido a ASP.NET"
<html>
<lenguaje de escritura="VB" runat=servidor>
Sub Page_Load (Remitente como objeto, E como EventArgs)
Mensaje.Text = "Bienvenido a ASP.NET"
Subtítulo final
</guión>
<cuerpo>
<asp:label id="Mensaje" tamaño de fuente=24 runat=servidor/>
</cuerpo>
</html>
Sintaxis del control del servidor HTML
El control del servidor HTML permite a los desarrolladores operar mediante programación elementos HTML en la página. La etiqueta de control del servidor HTML se diferencia del elemento HTML del cliente en que tiene el atributo "runat=server". El siguiente ejemplo demuestra cómo utilizar el control de servidor HTML <span runat=server> en una página ASP.NET.
<html>
<lenguaje de escritura="VB" runat=servidor>
Sub Page_Load (Remitente como objeto, E como EventArgs)
Message.InnerHtml = "Bienvenido a ASP.NET"
Subtítulo final
</guión>
<cuerpo>
<span id="Mensaje" style="font-size:24" runat=servidor/>
</cuerpo>
</html>
Sintaxis de enlace de datos: <%# %>
El soporte integrado de ASP.NET para el enlace de datos permite a los desarrolladores de páginas vincular jerárquicamente propiedades de control a valores del contenedor de datos. El código en el bloque de código <%# %> solo se ejecuta cuando se llama al método DataBind de su contenedor de control principal. El siguiente ejemplo demuestra cómo utilizar la sintaxis de enlace de datos en el control <asp:datalist runat=server>.
En esta lista de datos, a cada elemento se le asigna una plantilla. El contenido de la plantilla de elemento se especifica mediante una expresión de enlace de datos y Container.DataItem apunta al origen de datos utilizado por la lista de datos MyList.
<asp:datalist id="MiLista" runat=servidor>
<Plantilla de artículo>
Aquí hay un valor: <%# Container.DataItem %>
</Plantilla de elemento>
</asp:datalist>
En este caso, la fuente de datos del control MyList se establece mediante programación y luego se llama al método DataBind().
Llamar al método DataBind de un control activará un árbol recursivo (comenzando con el control hasta los controles inferiores del árbol, se generará el evento DataBinding de cada control de servidor en la jerarquía y la expresión de enlace de datos en el control Valores); se calculan en consecuencia. Por lo tanto, si se llama al método DataBind de la página, se llamará a todas las expresiones de enlace de datos de la página.
<html>
<lenguaje de escritura="VB" runat=servidor>
Sub Page_Load (Remitente como objeto, E como EventArgs)
Atenuar elementos como nueva lista de matrices
Items.Add("Uno")
Items.Add("Dos")
Items.Add("Tres")
MyList.DataSource = Artículos
MiLista.DataBind()
Fin Sub
</guión>
<cuerpo>
<asp:datalist id="MiLista" runat=servidor>
<Plantilla de artículo>
Aquí hay un valor: <%# Container.DataItem %>
</Plantilla de elemento>
</asp:lista de datos>
</cuerpo>
</html>
ASP.NET 2.0 también incluye una nueva sintaxis de enlace de datos simplificada, que permite que los controles se vinculen automáticamente a los controles de origen de datos sin tener que llamar a DataBind() en el código de la página. Esta sintaxis se analiza en el capítulo "Realización de acceso a datos".
Sintaxis de etiqueta de objeto: <object runat="server" />
La etiqueta de objeto permite a los desarrolladores de páginas utilizar una sintaxis declarativa basada en etiquetas para declarar y crear instancias de variables. El siguiente ejemplo demuestra cómo utilizar la notación de objetos para crear una instancia de la clase ArrayList.
Este objeto se crea automáticamente en tiempo de ejecución y se puede acceder a él a través de los "elementos" de ID.
<html>
<lenguaje de escritura="VB" runat=servidor>
Sub Page_Load (ByVal Remitente como objeto, ByVal E como EventArgs)
ArrayItems.Add("Uno")
ArrayItems.Add("Dos")
ArrayItems.Add("Tres")
MyList.DataSource = ArrayItems
MiLista.DataBind()
Subtítulo final
</guión>
<cuerpo>
<object id="ArrayItems" class="System.Collections.ArrayList" runat=servidor/>
<asp:datalist id="MiLista" runat=servidor>
<Plantilla de artículo>
Aquí hay un valor: <%# Container.DataItem %>
</Plantilla de elemento>
</asp:lista de datos>
</cuerpo>
</html>
Sintaxis de comentarios del lado del servidor: <%-- Comentario --%>
Los comentarios del lado del servidor permiten a los desarrolladores de páginas evitar la ejecución y representación del código del servidor (incluidos los controles del servidor) y el contenido estático. El siguiente ejemplo demuestra cómo evitar que el contenido se ejecute y se envíe al cliente. Tenga en cuenta que toda la información entre <%-- y --%> se filtrará y solo será visible en el archivo del servidor original, incluso si contiene otras directivas ASP.NET.
<html>
<cuerpo>
El siguiente contenido se ha ocultado a los clientes del navegador mediante un comentario del lado del servidor.
(vea la fuente .aspx para ver a qué nos referimos :-)
<%--
<asp:calendar id="MyCal" runat=servidor/>
<% Para I = 0 a 44 %>
Hola mundo <br>
<%Siguiente %>
--%>
</cuerpo>
</html>
Sintaxis de inclusión de archivos del lado del servidor: <-- #Include File="Locaton.inc" -->
La inclusión de archivos del lado del servidor (#Include) permite a los desarrolladores insertar el contenido de un archivo específico en cualquier lugar del ASP. Página NETA. El siguiente ejemplo demuestra cómo insertar títulos y pies de página personalizados en una página.
<html>
<cuerpo>
<!-- #Include File="Header.inc" -->
<br />
<h3> Contenido de la página principal </h3>
<br />
<!-- #Include File="Pie de página.inc" -->
</cuerpo>
</html>
Sintaxis de expresión: <%$ ... %>Nuevas características en 2.0
ASP.NET 2.0 agrega una nueva sintaxis de expresión declarativa para la sustitución de valores antes del análisis de la página. Es muy útil cuando necesitamos reemplazar el valor de la propiedad de control del servidor con el valor de la cadena de conexión o la configuración de la aplicación en el archivo Web.config. También se puede utilizar para reemplazar valores en archivos de recursos durante la localización.
<asp:SqlDataSource ID="SqlDataSource1" ConnectionString='<%$ ConnectionStrings:Pubs %>' runat="server" SelectCommand="sp_GetAuthors" />
<asp:Label ID="Label1" Text='<%$ Recursos: ExchRate, ConvertLabel %>' runat="server"/>