Como hacer un response en ASP sin enviar toda la página.

Esto es especialmente útil en ajax, si queremos enviar y devolver rapidamente una variable al servidor y que la respuesta no nos envíe mas que un pequeño valor y no todo el código y cabeceras de la página.

Lo normal es que si haces simplemente un Response.Write(“Todo OK!”), si haces un alert con lo que te devuelve, verás que tienes todo el código de la página detrás del Todo OK. Si solo quieres que llegue el Todo OK, sin el resto del código tienes que enviar el mensaje inmediatamente (Flush) y despues completar la conexión y eliminar el contenido.

 

HttpContext.Current.Response.Write(cadena)
HttpContext.Current.Response.Flush()
HttpContext.Current.ApplicationInstance.CompleteRequest()
HttpContext.Current.Response.SuppressContent = True

 

Alternar estilos css sin repetir el código en AlternateItemTemplate

Podemos reducir este código, en el que tendríamos que duplicar los elementos en el Item y en el AlternateItem:


                <ItemTemplate>
                    <div class="impar">
                        <asp:Label ID="lblNombrePase" Text="Pase:" runat="server" />
                        <asp:Label Text="" runat="server" />
                        <asp:Label ID="lblFecha" Text="Fecha:" runat="server" />
                        <asp:Label Text="" runat="server" />
                    </div>
                </ItemTemplate>
                <AlternateItemTemplate>
                    <div class="impar">
                        <asp:Label ID="lblNombrePase" Text="Pase:" runat="server" />
                        <asp:Label Text="" runat="server" />
                        <asp:Label ID="lblFecha" Text="Fecha:" runat="server" />
                        <asp:Label Text="" runat="server" />
                    </div>
                </AlternateItemTemplate>

Y lo podemos dejar así, creando la clase dinamicamente en función del indice del elemento. Y creando solo una vez el lenguaje de marcado.


                <ItemTemplate>
                    <div class="%#(IIf((Container.DataItemIndex Mod 2) = 1, "impar", "par")) %>">
                        <asp:Label ID="lblNombrePase" Text="Pase:" runat="server" />
                        <asp:Label Text="" runat="server" />
                        <asp:Label ID="lblFecha" Text="Fecha:" runat="server" />
                        <asp:Label Text="" runat="server" />
                    </div>
                </ItemTemplate>
              

Esto es válido para todos los controles repetidores de este tipo.