miércoles, 21 de diciembre de 2011

Tags especiales en ASP.NET

Voy a hacer un resumen de las etiquetas o tags especiales que usa ASP.NET para hacer "scripting"

<%  %>  Bloques de código incrustado
http://msdn.microsoft.com/es-es/library/ms178135.aspx

Como indica su definición, sirven para incrustar bloques de código.

<%@ Page Language="C#"%>
<html>
<body>
    <%string[] semana = { "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo" };%>     <ul>
        <%foreach (var s in semana)
        {
            Response.Write("<li>"+s+"</li>");
        }
        %>
    </ul>
</body>
</html>


<%= %> Response.Write
http://msdn.microsoft.com/es-es/library/6dwsdcf5.aspx

Esta etiqueta sustituye al Response.Write

<%@ Page Language="C#"%>
<html>
<body>
    <% string nombre="Pepe";%>
    <span>Hola, <%=nombre%></span>
</body>
</html>


<%# %> Expresión de datos enlazados
http://msdn.microsoft.com/es-es/library/bda9bbfx.aspx

Esta etiqueta crea un enlace a un origen de datos.

<%@ Page Language="C#"%>
<html>
<body>
    <script language="C#" runat="server">
        void BtnClick(Object sender, EventArgs e) {
          Page.DataBind();
        }
    </script>

    <form runat="server">
        <label>Nombre:</label>
        <asp:TextBox runat="server" id="Nombre"></asp:TextBox>
        <br />
        <asp:button Text="Saluda!!!" OnClick="BtnClick" runat="server"/>      
        <br />
        Hola, <%#Nombre.Text%>         <br />
        Hola, <%#DataBinder.Eval(Nombre,"Text")%>         <br />
        Hola, <%#DataBinder.GetPropertyValue(Nombre,"Text")%>     </form>
</body>
</html>



<%$ %> Expresión de ASP.NET
http://msdn.microsoft.com/es-es/library/d5bd1tad.aspx

Evalúa expresiones basadas en cadenas de conexión, configuración de aplicación, recursos,...

Para este ejemplo, he añadido un recurso global y he añadido una cadena


 Nuestro Web.Config tiene las siguientes entradas:

   <connectionStrings>
    <add name="NorthwindConnectionString"
        connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"
        providerName="System.Data.SqlClient" />
  </connectionStrings>

  <appSettings>
    <add key="Clave1" value="Valor1"/>
  </appSettings>


Nuestra página ASP.NET:


El recurso almacenado es: <asp:Label id="label1" runat="server" Text="<%$Resources:Resource, TextoAlmacenado1 %>"/>     
<br />
El valor almacenado en el AppSettings del Web.config es: <asp:Label id="label2" runat="server" Text="<%$AppSettings:Clave1 %>"/>
<br />
<asp:SqlDataSource ID="SqlDataSource1" Runat="server"
    SelectCommand="SELECT * FROM [Employees]"
    ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>">
    </asp:SqlDataSource>


<%@ %> Directivas de plantilla de texto
http://msdn.microsoft.com/es-es/library/xz702w3e.aspx

Se usan en las directivas de configuración de páginas, controles, etc.

<%@ Page Title="Hello, world" Language="C#"%>

<%-- --%> Comentarios de servidor
http://msdn.microsoft.com/es-es/library/4acf8afk.aspx


Son los comentarios de ASP.NET



<%: %> HtmlEncoding
http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax-for-html-encoding-output-in-asp-net-4-and-asp-net-mvc-2.aspx

Este tag sólo está disponible a partir de ASP.NET 4.0

Es el equivalente a Server.HtmlEncode, función usada para evitar ataques de inyección de scripts.

En el ejemplo siguiente, vemos que <%=cadena%> muestra "texto", mientras que <%:cadena%> muestra "<b>Texto<b>"




<%@ Page Language="C#"%>
<html>
<body>
    <%string cadena = "<b>Texto</b>";%>
    <%=cadena%>
    <br />
    <%:cadena%>
</body>
</html>

No hay comentarios: