jueves, 27 de octubre de 2011

ASP.NET - Mostrando frases aleatoriamente cada x segundos

random_aspnetEn posts anteriores ya habíamos escrito sobre:
1.- cómo actualizar una sección de página.
2.- Refrescar múltiples secciones de página.

Y es que muchos sitios web necesitan esta funcionalidad de actualización sin refrescar la página entera.

Ahora hablemos sobre cómo hacer una funcionalidad que me permita mostrar una frase aleatoria cada x segundos, pero también podría servirte para mostrar imágenes,  etc.

Hay muchas formas de lograr esto. Nosotros vamos a ponernos en el caso de que recuperamos un conjunto de frases de la base de datos y por eso hacemos uso de tecnología del lado del servidor.

Haremos un ejemplo muy simple.
En el siguiente ejemplo añadimos un ScriptManager a la página aspx, luego un control Timer y un UpdatePanel… este UpdatePanel tendrá un label, el cual visualizará las frases elegidas al azar.
Veamos:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server" id="Head1">
    <style type="text/css">
        .box
        {
            padding: 20px;
            border: Dotted 2px orange;
            background-color: yellowgreen;
            font: 16px tahoma;
        }
    </style>
    <title>Mostrando frases aleatorias con ASP.NET</title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <asp:Timer ID="Timer1" Interval="5000" runat="server" OnTick="Timer1_Tick" />
    <asp:UpdatePanel ID="up1" runat="server">
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="Timer1" />
        </Triggers>
        <ContentTemplate>
            <div class="box">
                <asp:Label ID="Label1" runat="server" />
            </div>
        </ContentTemplate>
    </asp:UpdatePanel>
    </form>
</body>
</html>

C Sharp:

protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsPostBack) return;

    Quote();
}

private void Quote()
{
    List<string> quotes = new List<string>();
    quotes.Add("Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.");
    quotes.Add("Si buscas resultados distintos, no hagas siempre lo mismo.");
    quotes.Add("El mundo no está en peligro por las malas personas sino por aquellas que permiten la maldad.");
    quotes.Add("Cada día sabemos más y entendemos menos.");
    quotes.Add("En los momentos de crisis, sólo la imaginación es más importante que el conocimiento.");
    
    Random rnd = new Random();
    Label1.Text = quotes[rnd.Next(quotes.Count)];
}

protected void Timer1_Tick(object sender, EventArgs e)
{
    Quote();
}
Para este caso, no he recuperado de la base de datos… sino que hay que suponer que así fue, Yo sólo estoy guardando las frases en una lista de Strings.

Luego, con la clase Random(), puedo elegir una frase aleatoria.

Es todo, espero que les sea de utilidad Guiño

No hay comentarios.: