jueves, 23 de febrero de 2012

Uso de Ajax con ASP y C#

Que rollo chavos


Hoy vengo con un ejemplo sencillo para la introducción al uso de Ajax en ASP con C#.




Primero que nada, descarguen la dll de Ajax aquí:


Ajax.dll


o de su pagina oficial.


Ahora, crearemos un WebSite con Visual Studio (yo tengo el VS2010).


Añadamos dos TextBox, un asp:Button y un "input type:button"


Como vemos el asp:Button ejecutará postback, y usaremos el button de html para correr el metodo de ajax. Bien sabemos que Ajax no es más que javascript, así que necesitamos un mínimo conocimiento de este script para hacer esto.




Aquí coloco unas imágenes de la pagina y de su código así como el código del codebehind en C#:


Imagen1.- Muestra la Pagina (aspx) tal y como la debes de ver tu

Imagen2.- Codigo aspx de la pagina

Imagen3.- Codigo C# del code behind de la pagina
Por si no se logra apreciar bien coloco aquí el codigo aspx de la pagina así como el código c# de la misma.



<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

<!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>Prueba Ajax</title>
    <script type="text/javascript" language="javascript">

        function SumaDosNumeros_CallBack(response) {

            document.getElementById("Label_Resultado").innerHTML = response.value;
        }
   
    </script>

</head>
<body>
    <form id="form1" runat="server">
    <div>
   
    <asp:TextBox ID="TextBox1" runat="server" />
    <asp:TextBox ID="TextBox2" runat="server" />
    <asp:label id="Label_Resultado" runat="server" >Resultado</asp:label>
   

    <asp:Button ID="Button_Suma" runat="server" Text="Suma por Servidor" onclick="Button_Suma_Click" />
         

    <input type="button" value="Suma con Ajax" onclick="Default2.SumaDosNumeros(TextBox1.value, TextBox2.value, SumaDosNumeros_CallBack);" />

    </div>
    </form>
</body>
</html>

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

public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Ajax.Utility.RegisterTypeForAjax(typeof(Default2));
    }
    protected void Button_Suma_Click(object sender, EventArgs e)
    {
        this.Label_Resultado.Text = Convert.ToString(Convert.ToInt32(this.TextBox1.Text) + Convert.ToInt32(this.TextBox2.Text));
    }

    [Ajax.AjaxMethod()]
    public string SumaDosNumeros(int num1, int num2)
    {
        return (Convert.ToString(num1 + num2));
    }

}

Bien comienzo con el tuto, lo anterior solo es para hacer referencia:










1.- Agregar referencia de Ajax


Se supone que ya tenemos un proyecto Web creado, para este ejemplo creamos un WebForm llamado Default2.aspx.


Agregamos la referencia a la dll de ajax:



  1. En el Solution Explorer clic derecho al WebSite y Add Reference.
  2. Pestaña Browse
  3. Buscamos Ajax.dll (la que descargamos anteriormente) y Ok
  4. Listo, Hemos agregado la dll, si la quieres localizar se encuentra en la carpeta Bin
Agregando la Referencia a Ajax.dll



Ahora, un punto crítico, algunas veces al hacer esto no se agrega la configuración correspondiente al Web.Config, creo que esto tiene algo que ver con el .Net Framework que estés usando. El .Net Framework 4 parece no presentar problemas, pero el 2.0 si.

Así que por las dudas, vamos al Web.Config y verifica si existen las siguientes lineas.










<httpHandlers>
<add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" />
</httpHandlers>

</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
    <validation validateIntegratedModeConfiguration="false"/>
</system.webServer>


Coloco una imagen del Web.config:


Chequen la parte inferior del Web.Config, httpHandlres y validateIntegratedModeConfiguration="false" son importantes


Bien puedo decir que las lineas mas importantes son las 3 primeras, los httphandlres y la validacion de integracion validateIntegratedModeConfiguration="false" si esta línea no se encuentra es posible que te marque el Error 500.23, para evitar futuros contratiempos con el IIS y Ajax te recomiendo colocar estas lineas si faltaran de una vez .


Excelente querido lector, si bien, ahora crearemos una WebPage que lo único que hará es sumar de dos maneras distintas dos números localizados cada uno en una caja de texto diferente. Una de las maneras será usando la tradicional forma en PostBack que usan nativamente los eventos en ASP, la otra manera será usando Ajax, genial!!!!!!!!, el resultado de la suma será colocado en una Label.


Comenzamos................   =)


2.- Preparamos nuestra WebPage


Como había dicho antes, agregamos un WebForm llamado Default2.aspx, bueno, a este le agregamos 2 asp:TextBox (TextBox1TextBox2), le agregamos una asp:Label (Label_Resultado), un asp:Button (Button_Suma) y un input type="button".


Tal y como se muestra en las Imágen 1 y 2 al inicio de esta entrada.






3.- Creamos los Métodos, Funciones y Eventos


Bien llegó la hora de programar C# y javascript.


1.- En el evento PageLoad de Default.aspx.cs colocamos el siguiente código:



Ajax.Utility.RegisterTypeForAjax(typeof(Default2));



Podemos obervar el typeof. Esto quiere decir que debemos allí colocar el nombre de la clase de nuestra WebPage, en nuestro caso se llama Default2.




2.- Agregamos un método Click al asp:Button, y en el colocamos el siguiente código:

this.Label_Resultado.Text = Convert.ToString(Convert.ToInt32(this.TextBox1.Text) + Convert.ToInt32(this.TextBox2.Text));


3.- Bien ahora creamos un Método llamado  SumaDosNumeros, y antes de él colocamos la llamada a métodos externos Ajax.AjaxMetrhod tal como coloco a continuación y como se puede apreciar en la imagen 3:

    [Ajax.AjaxMethod()]
    public string SumaDosNumeros(int num1, int num2)
    {
        return (Convert.ToString(num1 + num2));
    }



4.- Bon, ahora nos iremos al código aspx, entra a Default.aspx para ver el código de la página, crea una función javascript llamada  SumaDosNumeros_CallBack(response), tal como coloco a continuación, si vemos bien, que espero que sí (si no, creo que ya ocupamos lentes queridos lectores) el nombre de la función javascript es el mismo que el método en C# pero agregando al final de su nombre la palabra _CallBack y requiriendo el parámetro response:

    <script type="text/javascript" language="javascript">

        function SumaDosNumeros_CallBack(response) {

            document.getElementById("Label_Resultado").innerHTML = response.value;
        }
   
    </script>





5.- C'est parfait, ahora agregamos al evento onclick del input type="button" una llamada al evento en C#, con la siguiente sintaxis:


nombrePage.NombreMetodoC#(parametro1, parametro2,...., parametro_n, nombreFuncionJavascript)


Por tanto el input te quedará de la siguiente manera:

<input type="button" value="Suma con Ajax" onclick="Default2.SumaDosNumeros(TextBox1.value, TextBox2.value, SumaDosNumeros_CallBack);" />

Wow, parece ser que casi acabamos, ahora sólo nos queda testear esto y listo


5.- Testeamos


Coloco una imagen de mi Debug corriendo en localhost:






Bien, aquí acaba mi parte,


si quieren la solución (.sln) de VS2010 esta aquí:


WebSite_Ajax



ya saben, coloquen el .sln en:
C:\Users\NombreUsuario\Documents\Visual Studio 2010\Projects\WebSite_PruebaAjax
y los archivos del website en:
C:\Users\ NombreUsuario \Documents\Visual Studio 2010\WebSites\WebSite_PruebaAjax


Por favor, dejen sus comentarios, dudas, quejas y sugerencias para poder mejorar esta entrada y el blog en general, ya saben comentar es agradecer






Saludos a todos.






Tags:


  • Ajax
  • ASP
  • C#
  • Como usar Ajax
  • Usar Ajax con ASP
  • Usar Ajax con C#
  • Correr Metodos de C# desde el cliente
  • Ejecutar codigo C# con javascript
  • Error HTTP 500.23 - Internal Server Error
    Se ha detectado una configuración de ASP.NET que no se aplica en el modo integrado de canalización administrada.

lunes, 13 de febrero de 2012

Desmontar y/o Montar una Unidad de Disco Duro o CD/DVD/BD - ROM en Windows 7

Hay veces que ocurre un incidente en tu PC, como por ejemplo, que tienes una partición en tu disco duro en la cual guardas información, hay veces que Windows se pone roñoso y quita la partición o por accidente hacemos algo que afecta, ha tocado ocasiones que podría ser un virus. 


La cuestión es que al momento de entrar en Equipo e intentar abrir la unidad esta manda un mensaje de error diciendo que el link esta dañado o no sirve.



Tranquilo, tus datos siguen allí, sólo que Windos desmontó la unidad y no le aviso a nadie, dejando todos tus links inservibles.  Para solucionarlos sigue estos pasos:




1.- Abrir Administración de Equipos: Ve a Inicio.
2.- Clic Derecho en Computer / Equipo y Manage / Administrar



3.- Ve a Administración de Discos



7.- Aparecerá una advertencia, dar en Sí4.- Tendrás una Unidad (Device) por Disco Duro en Tu PC (Por lector DVD/CD/BD o Memoria USB Flasg o cualquier otro dispositivo de almacenamiento).

En frente del nombre de la unidad (Disco 0) están las particiones, a estas se les asignan letras al momento de montarse. Windows monta en automatico todas las particiones o unidades que se asignan desde aquí.

5.- Clic derecho en la unidad a la que deseas cambiar (En mi caso Respaldo), click en Cambiar letra y rutas de acceso a Unidad/Change letter or acces path… 





6.- Click en la unidad y Quitar


7.- Aparecerá una advertencia, dar en Sí



8.- Si apareciera el siguiente mensaje, es que la partición está en uso, dar en Sí, ahora tendrás que Reiniciar para efectuar cambios (seguirás viendo la unidad hasta que reinicies)


9.- Reiniciar, al iniciar verás que la unidad ya no se encuentra (es decir la partición está desmontada)

10.- Abre de nuevo Administración de Equipos y selecciona de nuevo Administración de Discos

11.- Ahora disponemos a montarla de nuevo: Clic derecho en la unidad a la que deseas cambiar (Respaldo en mi caso), click en Cambiar letra y rutas de acceso a Unidad/Change letter or acces path…

12.- En la ventana que sale, click en Agregar




13.- Seleccionar la letra que deseas, Puedes dejar la que te propone por default, en mi caso es la F, y Aceptar



14.- Cerramos el Administrador de Equipos y Listo.







Fuente:


Propia






Tags:

  • Desmontar y/o Montar una Unidad de Disco Duro o CD/DVD/BD - ROM en Windows 7
  • la conexion de la red a la que se refiere el acceso directo no esta disponible

miércoles, 8 de febrero de 2012

Identificar UserName de Windows del cliente (IIS, C#, ASP.Net)

El día de hoy planteo un problema que quizá no sea muy común, el hecho es que, si tu tienes un WebSite, y por alguna razón medio extraña quizá quieres conocer el UserName del cliente, debes confugurar tu web site de una manera particular para poder realizarlo (por medio del web.config).


Quizá sonará extraño, pero imaginen, quizá tu quieres agregarle dinamismo a tu web site, quieres que el usuario no tenga que loguearse nunca más, que con el sólo hecho de conectarse a tu web site, pueda accesar a todo (suena algo inseguro, sin duda podría serlo), con el simple hecho de entrar desde su maquina, para esto, primero tendrías que reconocer el usuario que existe en su maquina, y quizá su dominio. Lo anterior no suena muy lógico para web sites colgados en un servidor en la internet, pero para servidores que sólo trabajan en LAN o WAN dentro de una empresa esto es muy útil, ya que tienes un único dominio y los usuarios (usernames) nunca se repiten, y cada persona sólo puede loguearse en su propia máquina, o quizá en otra pero creando forzosamente una nueva cuenta en la misma.


Bien, para obtener acceso a estos datos necesitamos únicamente el HttpContext:

Request.ServerVariables["LOGON_USER"]


Ahora imagina que tienes una Label por ahi llamada Label1, observa todo lo que puedes obtener del cliente con el codigo siguiente:


for (int i = 0; i < HttpContext.Current.Request.ServerVariables.Count; i++)
        {
            this.Label1.Text += HttpContext.Current.Request.ServerVariables.Keys[i];
            this.Label1.Text += " :";
            this.Label1.Text += HttpContext.Current.Request.ServerVariables[i];
            this.Label1.Text += "<br />";
        }
Pero por supuesto, para poder hacer que esto no regrese cadenas vacías necesitas configurar de manera adecuada el web.config. Abre tu Web.config e ingresa o cambia las siguiente etiquetas, según el caso:


<authentication mode="Windows"/>

    <authorization>
      <deny users="?"/> <!--Acceso denegado a usuarios anónimos-->
    </authorization>




Te interesará: http://hzsquare.blogspot.com/2011/12/crear-website-con-iis-70-y-aspnet-40.html




Fuente: 


http://support.microsoft.com/kb/306359/es




Etiquetas:
  • LOGON_USER, REMOTE_USER, AUTH_USER Aparece vacío
  • Reconocer UserName de Windows del cliente
  • Conocer UserName del cliente
  • username del cliente
  • <authentication mode="Windows"/>
  • Reconocer login del cliente
  • Reconocer username, c#