Buscar

Ingphillip's-Prog

TODO: WEB!!!

mes

agosto 2011

Cómo detectar la retirada de un usuario en páginas ASP.NET?


Un saludo nuevamente a toda la comunidad de desarrolladores en Latam! en está ocasión quiero presentar la forma en que nosotros los desarrolladores podemos detectar el momento en que un usuario quiere abandonar una página Web de nuestra aplicación y de esta forma asegurarnos de que en realidad acepte el retiro o este  sea cancelado. Para esto es necesario manipular el objeto Windows mediante JavaScript de la siguiente forma veamos:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="OnUnLoadWebForm.aspx.cs"
    Inherits="OnUnLoad.OnUnLoadWebForm" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <script type="text/javascript" language="javascript">
window.onbeforeunload = function () {
            return "En realidad nos quieres abandonar?";
        }
    </script>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:LinkButton ID="LB1" runat="server" PostBackUrl="~/WebFormDestino.aspx" Text="Ir">
        </asp:LinkButton>
    </div>
    </form>
</body>
</html>

Cómo se puede ver dentro del tag script (tipo javascript) el evento a controlar es onbeforeunload, el cual se liga a una función anónima en la cual retornamos el mensaje que queremos exponga el confirm de retiro,
aclaro, este evento para el browser controla un alert o confirm especial nativo del browser, por lo tanto un alert o confirm sencillo valga la redundancía no tendría el mismo efecto. veamos un pequeño WebCast referente.

 

Anuncios

PageWebMethods y el Objeto ScriptManager en ASP.NET


Hola como hemos hablado anteriormente, una de las principales necesidades de un desarrollador Web es poder lograr comunicaciones asíncronas con el servidor de tal forma que sea posible evitar postbacks, lo cual mejora la experiencia de usuario y los tiempos de respuesta. Pues bien en el camino arduo y tortuoso, para este tipo de llamados en ASP.NET poseemos un objeto que brinda mucho poder y es el objeto ScriptManager, que en pocas palabras nos permite mejorar y extender el funcionalidad en el lado cliente con Javascript.

Para poder hacer este tipo de llamados es necesario crear un WebMethod, el que nos permite crear un comportamiento ajax de forma tal que mediante una invocación no sea necesario pasar por todo el ciclo de vida de una página en ASP.NET de tal forma necesitamos agregar al form el objeto ScriptManager, existente en el Toolbox de Visual Studio, tal cual como vemos en pantalla.

En dicho objeto debemos establecer la propiedad EnablePageMethods en true, así cuando la página sea ejecutada el ScriptManager se encargará de crear toda la funcionalidad necesaria para realizar el llamado asíncrono a los PageMethods existentes y accesibles de forma estática. Nos restará poner por ejemplo en nuestro código las siguiente lineas que serán las encargadas de consumir y procesar el resultado del servicio “estático” que se creó en la Página Web.

ASPX


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebFormWebMethods.aspx.cs" Inherits="PageWebMethodsScriptManager.WebFormWebMethods" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript" language="javascript">
        function LlamarWebMethod() {
            PageMethods.GetPaises(Result);
            return false;
        }
        function Result(results) {
            var msgDatos = new String();
            msgDatos = "Paises:<br/>";
            for (var i = 0; i < results.length; i++) {
                msgDatos += i + ". " + results[i] + "<br/>";
            }
            DivResultados.innerHTML = msgDatos;
        }
    </script>
</head>
<body>
    
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
    </asp:ScriptManager>
    <div>
        <asp:Button ID="BtCallWebMethod" runat="server" Text="Llamar Web Method" 
        OnClientClick="return LlamarWebMethod();" />
    </div>
    <div id="DivResultados"></div>
    </form>
</body>
</html>

Code behind C# del ejemplo.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;

namespace PageWebMethodsScriptManager
{
    public partial class WebFormWebMethods : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        //Este será nuestro Servicio, declarado de forma simple, evitando complejidad y la creación de un            
        //WebService cuando no es necesario.
        [WebMethod]
        public static List<string> GetPaises()
        {
            List<string> listPaises = new List<string>();
            listPaises.Add("Colombia");
            listPaises.Add("Perú");
            listPaises.Add("Argentina");
            listPaises.Add("Brazil");
            listPaises.Add("Uruguay"); 
            listPaises.Add("Chile");
            listPaises.Add("Venezuela");
            return listPaises;
        }
    }
}

Ok así podemos mejorar nuestras aplicaciones y de una forma sencilla se hará dicha implementación que en muchas ocasiones nos causa tantos dolores de cabeza.

Detección de vista de compatibilidad en IE y otros Exploradores ASP.NET


Hola comunidad,

En esta ocasión  quiero compartir con ustedes la forma en cómo mediante JavaScript podemos detectar la vista de compatibilidad en IE y si nuestra aplicación está corriendo en Google Chrome o FireFox, Por qué? muchas veces es necesario que los estilos o archivos .css o webparts sean compatibles y no presenten bug’s que hagan deficiente la experiencia de usuario, por lo tanto se hace preciso controlar de alguna forma y que se pueda saber bajo que entorno se está corriendo, con el siguiente script podemos solventar esto.


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebFormDetectedCompatibility.aspx.cs" Inherits="DetectedBrowserCompatibility.WebFormDetectedCompatibility" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript" language="javascript">
        //Permite detectar otros exploradores y  cuando IE corre con Vista de Compatibilidad
        function ComprobarBrowser() {
            if (document.documentMode) {
                if (document.documentMode <= 7) {
                    alert("Hola estas en Internet Explorer con vista de compatibilidad");
                    return;
                }
                alert("Hola esta es una versión de Internet Explorer sin vista de compatibilidad");

            } else {
                alert("Esto no es Internet Explorer.");
            }
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="BtBrowser" runat="server" OnClientClick="return ComprobarBrowser();" Text="¿Qué Browser?" />
    </div>
    </form>
</body>
</html>

Al correr nuestra aplicación veremos los alert de javascript según los codificamos para cada explorador, de la siguiente forma.

1 – IE sin vista de compatibilidad.

2 – IE con vista de compatibilidad.

3 – Otro explorador

Eso es todo, saludos!

Configuración y envío de email con ASP.NET y C#


En este post vamos a ver la forma en que podemos crear la funcionalidad de envío de mails para nuestras aplicaciones ASP.NET usando C#.

Empecemos por ver lo que será nuestro formulario de envío.

Seguir leyendo “Configuración y envío de email con ASP.NET y C#”

Tipos de comunicación entre WebForms ASP.NET


En esta ocasión hablaremos sobre diferentes tipos de comunicación entre WebForms, existentes para ASP.NET.

Veamos el WebForm Origen,  el cuál utilizaremos para presentar todos los ejemplo:

Seguir leyendo “Tipos de comunicación entre WebForms ASP.NET”

CascadingDropDownList JQuery y ASP.NET


En esta oportunidad mediante un ejemplo, vamos a implementar la funcionalidad de selectores en cascada.  “Si el siguiente error, alguna vez se te atravesó  en el camino!, estás en el lugar indicado :D.”

“Invalid postback or callback argument. Event validation is enabled using in configuration or in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.”

Entonces, es necesario tomar medidas y no dejarnos llevar del pánico.

Seguir leyendo “CascadingDropDownList JQuery y ASP.NET”

Subir ↑