Você está na página 1de 17

Scripts de cliente en pginas Web ASP.

NET
Enviar comentarios

Las aplicaciones web ASP.NET no se limitan a los lenguajes y las herramientas basados en servidor.Puede incluir ECMAScript (JavaScript o JScript) en sus pginas web ASP.NET para crear funcionalidad enriquecida basada en explorador.ASP.NET dispone de una amplia gama de caractersticas para la compatibilidad con los scripts de cliente. Una opcin consiste en crear y agregar fragmentos de cdigo individuales de script de cliente a las pginas web ASP.NET para admitir el comportamiento de explorador que disee para la aplicacin.Esta opcin resulta prctica si solo desea incluir algunas partes pequeas de cdigo JavaScript o si trabaja con cdigo JavaScript que ya tiene.Esta opcin tambin permite que el tamao de las pginas web ASP.NET sea el mnimo. Asimismo, puede aprovechar las eficaces caractersticas AJAX de ASP.NET.Entre estas caractersticas AJAX se incluye un completo marco de trabajo que admite lo siguiente: Programacin orientada a objetos en JavaScript. Postbacks asincrnicos. Servicios Web de aplicacin para autenticacin y perfiles. Controles de servidor que administran los scripts de cliente con compatibilidad ampliada para depuracin y seguimiento de traza.

Las caractersticas AJAX de ASP.NET permiten aprovechar las ventajas de la funcionalidad de JavaScript con menos codificacin manual.Esta proporciona la funcionalidad de JavaScript ampliada, adems de un marco de trabajo para crear la funcionalidad de cliente que se integra en ASP.NET. En este tema se proporciona informacin general sobre las opciones para agregar script de cliente a las pginas web ASP.NET.Contiene las siguientes secciones: Escenarios Incluir script de cliente personalizado en pginas ASP.NET Ampliar JavaScript con caractersticas AJAX de ASP.NET Controles de servidor ASP.NET que dependen de scripts de cliente Agregar eventos del script de cliente a los controles de servidor ASP.NET Hacer referencia a controles de servidor en scripts de cliente Provocar eventos Click de cliente para los controles de servidor Comunicacin entre scripts de cliente y cdigo de servidor Crear componentes de script de cliente Agregar funcionalidad de cliente a los controles de servidor

Escenarios
Use los scripts de cliente cuando desee hacer lo siguiente: Mejorar la experiencia del usuario con pginas web ms enriquecidas, que son ms receptivas a las acciones del usuario y presentan un comportamiento similar a las aplicaciones cliente tradicionales.Por ejemplo, puede usar scripts de cliente para comprobar los datos proporcionados con el teclado en un cuadro de texto a medida que se escribe cada uno de los caracteres. Agregar funcionalidad AJAX a las pginas web ASP.NET, lo que le permite hacer lo siguiente: Reducir las actualizaciones de pgina completa y evitar el parpadeo de la pgina mediante la manipulacin dinmica de los elementos DOM de la pgina. Actualizar y administrar la interfaz de usuario sin necesidad de un postback al servidor. Organizar el cdigo en componentes de cliente.Los componentes de cliente son objetos reutilizables que encapsulan JavaScript basado en Microsoft Ajax Library.Los componentes de cliente tambin se pueden administrar mediante controles del lado servidor personalizados o asociar a controles de servidor existentes para agregar funcionalidad de cliente.

Incluir script de cliente personalizado en pginas ASP.NET


Dado que las pginas web ASP.NET solo presentan marcado HTML, puede agregarles su propio script de cliente.Las pginas ASP.NET admiten scripts de cliente en la medida en que el explorador que solicita la pgina admite dichos scripts.Si la pgina se ejecuta en un explorador de un telfono u otro dispositivo mvil, el grado de compatibilidad con el script de cliente variar segn el explorador. Existen varias opciones para incluir scripts de cliente en las pginas ASP.NET: Puede incluir scripts de cliente de forma esttica en un bloque script que incluya cdigo o que use un atributo include para hacer referencia a un archivo JavaScript (.js). Use esta opcin para insertar bloques de script o archivos JavaScript que contengan scripts de cliente que no sea necesario crear dinmicamente y que no requieran la funcionalidad AJAX adicional que proporciona Microsoft Ajax Library. Puede crear y agregar dinmicamente el script de cliente a una pgina web ASP.NET mediante la claseClientScriptManager. Use esta opcin si desea crear scripts que dependan de informacin que solo est disponible en tiempo de ejecucin. Si desea aprovechar las caractersticas AJAX de ASP.NET, puede administrar los archivos de script de cliente mediante el control de servidor ScriptManager. El control de servidor ScriptManager tambin garantiza que Microsoft Ajax Library se cargue en el explorador antes de ejecutarse los scripts. Para obtener ms informacin, vea Informacin general sobre Microsoft Ajax.

Incluir bloques de script de cliente estticos

Se pueden agregar bloques de script a una pgina ASP.NET del mismo modo que se hara en cualquier pgina HTML. Tambin se pueden utilizar scripts de cliente para escribir controladores de eventos para eventos de cliente como el evento onload de la pgina. Cuando una pgina ASP.NET se ejecuta en el explorador, los elementos de marcado de la pgina son direccionables en el script de cliente.Estos generan los mismos eventos de cliente que en una pgina HTML. Nota Puede hacer referencia a los controles de servidor ASP.NET en el script de cliente.Para obtener ms informacin, vea Hacer referencia a controles de servidor en scripts de cliente ms adelante en este tema. Una pgina web ASP.NET tambin puede tener acceso a un archivo de script al hacer referencia a este en el atributosrc de una etiqueta <script>, como en el ejemplo siguiente:
Imprimir

<script type="text/javascript" src="MyScript.js"></script> Mantener los scripts de cliente en archivos .js externos en lugar de mantenerlos en las pginas en s puede ayudar a organizarlos.Tambin puede facilitar su administracin por parte del control de versiones y hacer que sea ms fcil compartirlos entre pginas. El explorador almacena en cach los archivos .js externos, de forma similar a como se almacenan en cach las imgenes y las pginas web.Una vez que el explorador carga el script como archivo externo, este est disponible en la memoria cach para cualquier otra pgina web que lo necesite.Esto puede ayudar a aumentar el rendimiento de la aplicacin web.
Crear script de cliente de forma dinmica

En muchos casos, el script de cliente para la pgina se puede crear mediante declaracin, normalmente como un bloque de script.Sin embargo, tambin se puede crear script de cliente de forma dinmica.Esto resulta til si el script depende de informacin que solo est disponible en tiempo de ejecucin.Por ejemplo, puede insertar el script de cliente en una pgina que direcciona un control de servidor cuyo nombre (identificador) no se conoce hasta que se ejecuta la aplicacin, o puede crear un script que depende de los valores recibidos de un usuario. Para crear e insertar script de cliente de forma dinmica en una pgina presentada, llame a los mtodos de la claseClientScriptManager, como los siguientes: RegisterClientScriptBlock, que inserta un bloque de script en la parte superior de la pgina presentada. RegisterStartupScript, que inserta un bloque de script al final de la pgina presentada.

En el ejemplo siguiente se muestra cmo agregar a la pgina el script de cliente generado dinmicamente.El cdigo comprueba si est activada la casilla denominada checkDisplayCount. En caso afirmativo, el cdigo realiza las siguientes tareas:

Crea una funcin de script de cliente que usa un elemento span para mostrar el recuento de caracteres en un control TextBox denominado TextBox1. Agrega un evento de cliente al control TextBox. Genera el elemento span.

El cdigo supone que la pgina contiene una casilla denominada checkDisplayCount cuya propiedadAutoPostBack est establecida en true y un control PlaceHolder denominado PlaceHolder1.
VB C# C++ F# JScript Imprimir

Protected Sub Page_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) If checkDisplayCount.Checked Then Dim scriptText As String = "" scriptText &= "function DisplayCharCount(){" scriptText &= " getElementByID("spanCounter").innerText = " & _ "document.forms[0].TextBox1.value.length" scriptText &= "}" ClientScriptManager.RegisterClientScriptBlock(Me.GetType(), _ "CounterScript", scriptText, True) TextBox1.Attributes.Add("onkeyup", "DisplayCharCount()") Dim spanLiteral As New LiteralControl() spanLiteral.Text = "<span id=""spanCounter""></span>" PlaceHolder1.Controls.Add(spanLiteral) End If End Sub Para obtener ms informacin, vea Cmo: Agregar script de cliente a las pginas Web ASP.NET dinmicamente. Para los mtodos de la clase ClientScriptManager, se proporciona un tipo al que est asociado el bloque de script y se asigna una clave a este bloque. Al proporcionar un tipo resulta ms fcil evitar colisiones si tanto la pgina como los controles (controles personalizados o controles de usuario) agregan bloques de script a la misma pgina.El uso de una clave permite evitar la duplicacin.Si llama a uno de los mtodos para agregar el script y ya existe un script con la misma clave y el mismo tipo, el script no se vuelve a agregar. El tipo y la clave proporcionados permiten evitar una duplicacin innecesaria.Por lo tanto, generalmente no tendr que determinar de forma explcita si ya existe un bloque de script.Sin embargo, si es til en la aplicacin comprobar si ya existe un bloque de script, puede llamar a los mtodos siguientes: IsClientScriptBlockRegistered IsClientScriptIncludeRegistered IsOnSubmitStatementRegistered

IsStartupScriptRegistered

Agregar un script de cliente mediante el control ScriptManager

Si usa las caractersticas AJAX de ASP.NET, el control ScriptManager ofrece una forma de agregar archivos de script a una pgina. Esto incluye los archivos de script estticos (archivos .js) del disco y los archivos de script incrustados como recursos en un ensamblado.Los archivos de script se pueden especificar mediante declaracin en el control.Como alternativa, puede usar los mtodos de registro del control ScriptManager que permiten administrar los archivos de script de cliente existentes mediante programacin y trabajar con scripts para admitir la actualizacin parcial de la pgina. Para obtener informacin general sobre el control ScriptManager, vea Informacin general sobre el control ScriptManager. Para obtener informacin sobre cmo incrustar un archivo JavaScript como recurso en un ensamblado y cmo usarlo en una pgina web, vea Tutorial: Incrustar un archivo JavaScript como recurso en un ensamblado. Nota Si usa las caractersticas AJAX de cliente de ASP.NET, pero no las caractersticas basadas en servidor, use los mtodos de la clase ClientScriptManager para insertar scripts en una pgina web ASP.NET. Por ejemplo, si no usa el control UpdatePanel ni las caractersticas de localizacin de scripts, no necesita el controlScriptManager. Por consiguiente, no puede llamar a sus mtodos para insertar el script de cliente en la pgina.El uso de los mtodos de la clase ClientScriptManager suele ser ms eficaz que usar los mtodos del control ScriptManager. Esto se debe a que los mtodos de la clase ClientScriptManager no requieren el procesamiento adicional de las caractersticas basadas en servidor admitidas por el control ScriptManager. Si tiene que crear el script de forma dinmica (en lugar de simplemente administrar el script existente), use la clase ClientScriptManager para insertar el script de cliente en una pgina. Por ejemplo, use la claseClientScriptManager si desea crear el script de cliente mediante programacin en funcin de la informacin a la que un archivo de script ya existente no puede hacer referencia.

Ampliar JavaScript con caractersticas AJAX de ASP.NET


ASP.NET admite la funcionalidad AJAX, lo que permite usar scripts de cliente para agregar caractersticas enriquecidas a una pgina web ASP.NET.Entre ellas se incluyen los postbacks asincrnicos y una interfaz de usuario con capacidad de respuesta muy elevada.La funcionalidad AJAX se implementa mediante Microsoft Ajax Library, que se compone de bibliotecas de scripts de cliente que incorporan las tecnologas entre exploradores ECMAScript (JavaScript) y HTML dinmico (DHTML).La funcionalidad AJAX se integra en la plataforma de desarrollo para servidores de ASP.NET. Puede usar el sistema de tipos de Microsoft Ajax Library, las caractersticas orientadas a objetos y las extensiones de objetos JavaScript a fin de ofrecer las caractersticas siguientes para la creacin de scripts de cliente personalizados: Espacios de nombres Herencia

Interfaces Enumeraciones Reflexin Aplicaciones auxiliares de depuracin Traza Control de excepciones con tipo Mtodos auxiliares para cadenas y matrices. Nota Puede usar Microsoft Ajax Library aunque no tenga previsto usar las caractersticas AJAX para servidores de ASP.NET.

Para obtener ms informacin sobre la forma en que Microsoft Ajax Library ampla JavaScript, consulte los siguientes temas: Crear un script de cliente personalizado mediante Microsoft Ajax Library. Extensiones de tipo base de JavaScript Informacin general sobre la depuracin y la traza de aplicaciones habilitadas para AJAX Extensiones de tipo de error

Compatibilidad para exploradores de las caractersticas AJAX

El nivel de compatibilidad con exploradores de Microsoft Ajax Library proporciona compatibilidad con scripting de Ajax para los exploradores que se usan con ms frecuencia (incluidos Microsoft Internet Explorer, Mozilla Firefox y Apple Safari).Esto permite escribir el mismo script independientemente del explorador compatible al que est destinado.Para obtener ms informacin, vea Informacin general sobre Microsoft Ajax.

Controles de servidor ASP.NET que dependen de scripts de cliente


La funcionalidad de algunos controles de servidor ASP.NET depende del script de cliente.Por ejemplo, el controlLinkButton requiere scripts de cliente para implementar su comportamiento de devolucin de datos. Los scripts de cliente requeridos para los controles de servidor Web ASP.NET se agregan automticamente a la pgina cuando sta se representa.Los scripts de cliente generados para estos controles son independientes de los scripts creados por el desarrollador. Para obtener ms informacin, vea Controles de servidor web de ASP.NET que usan un script de cliente.

Agregar eventos del script de cliente a los controles de servidor ASP.NET

Los controles ASP.NET se presentan como elementos en la pgina.(Los elementos exactos presentados por un control dependen del lenguaje de marcado de la pgina, que puede incluir HTML, XHTML u otro lenguaje). Por lo tanto, puede agregar el control de eventos del script de cliente a los controles del mismo modo que lo hara con cualquier elemento de la pgina.Sin embargo, en algunos casos, debe saber cmo presenta el control su resultado y qu atributos se reserva para s mismo. Para obtener ms informacin, vea Cmo: Agregar eventos de script de cliente a los controles de servidor Web ASP.NET
Agregar controladores de eventos de cliente mediante declaracin

En el formato de los controles de servidor ASP.NET, los valores de las propiedades se establecen mediante atributos.Por ejemplo, para establecer la propiedad Text de un control TextBox, puede crear un marcado como el siguiente:
Imprimir

<asp:textbox id="TextBox1" runat="server" text="Sample Text" /> Nota sobre la seguridad TextBox acepta los datos proporcionados por el usuario, lo que puede suponer una amenaza para la seguridad. De forma predeterminada, las pginas web ASP.NET validan los datos escritos por el usuario para comprobar que no incluyen script ni elementos HTML.Para obtener ms informacin, vea Informacin general sobre los ataques mediante scripts. Si se incluye un atributo que no est asignado a ninguna propiedad del control, ASP.NET omite el atributo durante el procesamiento del servidor.Lo pasa al explorador tal cual, como parte del marcado generado por el control.Por ejemplo, el control TextBox no tiene ninguna propiedad denominada onkeyup. Por consiguiente, si incluye un atributo onkeyup en el marcado de un control TextBox, el atributo se pasa a travs del explorador. Este comportamiento permite agregar enlaces de eventos a los controles de servidor declarndolos en el marcado.Por ejemplo, el formato siguiente de un control TextBox hace que el cuadro de texto muestre la longitud del texto actual en un elemento span denominado spanCounter cada vez que el usuario presiona una tecla en el cuadro de texto:
Imprimir

<asp:textbox id="TextBox1" runat="server" text="Sample Text" onkeyup="spanCounter.innerText=this.value.length;" /> Opcionalmente, el evento podra llamar a un mtodo definido en un script de cliente situado en otra parte de la pgina:
Imprimir

<asp:textbox id="TextBox1" runat="server" text="Sample Text" onkeyup="DisplayCount(this);" /> Recuerde que el lenguaje empleado para el cdigo de servidor (Visual Basic o C#) no afecta al script de cliente, que siempre se escribe en ECMAScript (JavaScript or JScript). Para obtener ms informacin, vea Cmo: Agregar eventos de script de cliente a los controles de servidor Web ASP.NET.

Agregar atributos en el cdigo de servidor

Adems de agregar atributos de paso a travs a un control mediante declaracin, tambin se pueden agregar atributos mediante programacin utilizando el cdigo de servidor.Esto resulta til si el valor del atributo que se va a agregar se conoce solo en tiempo de ejecucin.Para obtener informacin detallada, vea Cmo: Establecer atributos HTML de controles en pginas web ASP.NET.

Hacer referencia a controles de servidor en scripts de cliente


Cuando se presenta un control de servidor ASP.NET, la propiedad ClientID del control se presenta en la pgina como atributo id del elemento resultante. (La propiedad ClientID se genera automticamente a partir de la propiedad ID que se establezca.) Por ejemplo, podra crear el control de servidor ASP.NET siguiente:
Imprimir

<asp:textbox id="TextBox1" runat="server" text="Sample Text" /> La propiedad ClientID se establece en TextBox1 y el elemento resultante tendra la apariencia siguiente en un explorador basado en HTML:
Imprimir

<input name="TextBox1" type="text" value="Sample Text" id="TextBox1" /> Por consiguiente, puede hacer referencia al control de servidor en el script de cliente mediante estos atributos.Normalmente, el control se direcciona utilizando una referencia completa en el script de cliente.Si el control es un elemento secundario del elemento form de la pgina, normalmente se hace referencia a l en el script de cliente mediante sintaxis, como se muestra en el siguiente ejemplo:
Imprimir

var tb1 = document.getElementById("TextBox1"); tb1.value = "New value"; En el ejemplo siguiente se supone que, para el elemento form de la pgina, el atributo id se ha establecido enform1.
Imprimir

document.form1.TextBox1.value = "New value"; El atributo id que se generar para un control de servidor depende del control que se est usando y de si es un elemento secundario de otro control. Cuando un control est incluido en un control de repeticin, como el controlGridView, ListView o Repeater, un solo control definido en el marcado suele crear varias instancias del control en el HTML presentado. El marco de las pgina ASP.NET proporciona un mecanismo para asegurarse de que cada control en el HTML presentado de una pgina tiene un identificador nico.Para obtener ms informacin sobre los algoritmos que ASP.NET usa para asignar los valores de ClientID, vea la propiedad ClientIDMode y los siguientes temas: Identificacin de controles de servidor web ASP.NET. Cmo: Obtener acceso a controles de JavaScript por identificador Tutorial: Facilitar el acceso a los controles enlazados a datos desde JavaScript

Tutorial: Facilitar el acceso a los controles situados en controles de usuario web desde JavaScript

Provocar eventos Click de cliente para los controles de servidor


Tal como se ha explicado anteriormente, puede agregar eventos Click de cliente a la mayora de los controles de servidor ASP.NET si agrega el atributo onclick al marcado del control. Sin embargo, algunos controles reservan el atributo onclick para definir el enlace al evento de servidor. Entre estos se encuentran los controles Button,LinkButton e ImageButton. Estos controles no permiten utilizar el atributo onclick mediante declaracin para agregar un controlador de script de cliente al control. El controlador de script de cliente para el evento Click se puede agregar de dos maneras: Establezca la propiedad OnClientClick del control como el script que se debe ejecutar. Cuando se representa el control de botn, el valor de OnClientClick se convierte en un atributo onclick. Agregue el atributo onclick mediante programacin llamando al mtodo Add de la coleccin Attributes del control. Nota No puede agregar un atributo onclick mediante programacin a un control de servidor si este ya usaonclick como parte de su funcionalidad bsica, como LinkButton. En el ejemplo de cdigo siguiente se muestra un control Button que produce eventos Click en el cliente y en el servidor:
Imprimir

<asp:button id="Button1" runat="server" OnClientClick="return confirm('Ok to post?')" onclick="Button1_Click" Text="Click!" />

Comunicacin entre scripts de cliente y cdigo de servidor


Adems de usar los postbacks estndar, las pginas web ASP.NET pueden comunicarse con el script de cliente y el cdigo de servidor de varias maneras.Las caractersticas AJAX de ASP.NET, como el control de servidor UpdatePanel, automatizan las actualizaciones asincrnicas parciales de la pgina. Adems, AJAX de ASP.NET permite llamar a los servicios Web de forma asincrnica. Si no usa las caractersticas AJAX de ASP.NET, puede invocar una devolucin de llamada de cliente personalizada directamente y compartir la informacin entre el explorador y el servidor a travs de diversos mtodos.En la seccin siguiente se proporciona informacin sobre las opciones disponibles.
Llamar al cdigo de servidor directamente desde el script de cliente

El script de cliente puede llamar directamente al cdigo de servidor si se implementa una devolucin de llamada de cliente.En una secuencia normal de pginas web ASP.NET, cada accin del

usuario que ejecuta cdigo de servidor requiere un postback.Sin embargo, tambin puede invocar el procesamiento del servidor desde el explorador sin un postback completo.En este caso, el explorador no enva la pgina entera al servidor y la recarga posteriormente cuando el servidor responde.En su lugar, el explorador enva una cantidad pequea de datos al servidor.Cuando el servidor enva una respuesta, el script de cliente en el explorador procesa los datos devueltos sin recargar la pgina.Durante el procesamiento del servidor, se mantiene todo el estado del cliente, como las variables locales.Este proceso se conoce como postback asincrnico y es clave para la representacin parcial de la pgina. Puede llamar a los mtodos de servidor desde el script de cliente sin un postback de las siguientes maneras: Use el control de servidor ASP.NET UpdatePanel. Este control forma parte de la funcionalidad AJAX de ASP.NET.Permite definir una regin de una pgina que se actualizar con una actualizacin parcial de la pgina.Cuando use el control UpdatePanel, no es necesario que escriba ningn script de cliente para invocar las actualizaciones asincrnicas parciales de la pgina. Para obtener ms informacin, vea Informacin general sobre la representacin parcial de pginas y Informacin general sobre el control UpdatePanel. Use la compatibilidad con AJAX de ASP.NET para la comunicacin de servicios Web para escribir scripts de cliente que invoquen un mtodo de servidor web.Este enfoque es conceptualmente similar a escribir su propia devolucin de llamada del script de cliente para llamar a un mtodo de servidor web.Sin embargo, Microsoft Ajax Library administra los detalles de la invocacin del mtodo de servidor y proporciona una biblioteca de scripts de cliente ms slida para realizar y procesar la llamada.Para obtener ms informacin, vea ASP.NET AJAX and Web Services. Implemente una devolucin de llamada de cliente.En este caso, se escribe el cdigo de cliente que enva la solicitud y procesa el resultado.El enfoque ms comn es crear una funcin de llamada en el script de cliente y una funcin de devolucin de llamada que se invoca cuando el servidor devuelve los resultados.Para obtener ms informacin, vea Implementar mediante programacin devoluciones de llamada de cliente sin devoluciones de datos en pginas web de ASP.NET

Cada enfoque tiene sus ventajas.Crear una devolucin de llamada de cliente propia suele ofrecer menos sobrecarga y un tamao de pgina ms pequeo.Usar el control de servidor UpdatePanel permite implementar actualizaciones parciales de la pgina sin necesidad de escribir ningn script de cliente. Usar AJAX para llamar a los servicios Web tambin elimina la mayora de los scripts de cliente que debera escribir para realizar llamadas asincrnicas a los servicios Web.
Compartir datos mediante un control HiddenField

Puede compartir informacin entre el script de cliente y el cdigo de servidor si agrega un control HiddenField a la pgina. Puede hacer referencia al campo oculto en el script de cliente mediante su identificador.Tambin puede hacer referencia al campo oculto en el cdigo de servidor.Esto permite almacenar los valores en cualquiera de los bloques de cdigo y leerlos en el otro.Para pasar informacin del cdigo de servidor al script de cliente, puede crear un campo oculto mediante programacin con el mtodo RegisterHiddenField. Este mtodo permite especificar un

identificador y un valor para el campo.Puede usar el campo para almacenar valores dinmicos en la pgina de manera que ese script de cliente pueda leerlos.
Compartir datos mediante cookies

Tambin puede compartir valores entre el cdigo de servidor y el cdigo de cliente mediante cookies.Para obtener ms informacin sobre cmo escribir y leer cookies en el cdigo de servidor, vea Cmo: Escribir una cookie y Cmo: Leer una cookie. Para obtener informacin detallada sobre cmo usar JavaScript para leer y escribir cookies, vea JavaScript and cookies en el sitio web de MSDN.
Compartir datos durante postbacks asincrnicos

Si usa las caractersticas AJAX de ASP.NET, puede enviar datos personalizados como una cadena desde el servidor al cliente durante los postbacks asincrnicos (representacin parcial de la pgina) con el mtodo RegisterDataItem. El mtodo RegisterDataItem permite usar el cdigo de servidor para registrar un campo asociado a un control. Puede obtener acceso al valor del campo del script de cliente en el explorador a travs de los objetos AJAX de ASP.NETSys.WebForms.PageLoadingEventArgs y Sys.WebForms.PageLoadedEventArgs. Solo se puede llamar al mtodoRegisterDataItem durante un postback asincrnico. Para obtener informacin sobre cmo usar el mtodo RegisterDataItem para compartir datos entre el servidor y el cliente, consulte los temas siguientes: RegisterDataItem Trabajar con eventos de representacin de pgina parcial

Crear componentes de script de cliente


Los componentes de cliente son objetos reutilizables que encapsulan JavaScript basado en Microsoft Ajax Library.La biblioteca proporciona las siguientes clases base de tipos de objeto de cliente: Component (clase base para componentes no visuales), Control y Behavior. Puede derivar de estas clases para proporcionar funcionalidad de cliente enriquecida, que incluye lo siguiente: Obtener acceso al ciclo de vida de un componente desde la inicializacin a la eliminacin.Se incluyen los eventos que se generan cuando cambian los valores de propiedad. Representar un elemento DOM como un objeto de cliente que tiene una nueva funcionalidad.De esta manera se ampla el comportamiento de elementos DOM.Por ejemplo, puede agregar un comportamiento de impresin de marcas de agua que se puede asociar a un cuadro de texto existente.

Para obtener ms informacin, vea los temas siguientes: Crear componentes de cliente no visuales personalizados Crear controles de cliente de AJAX personalizados Crear una clase de componente de cliente utilizando el modelo de prototipo

Agregar funcionalidad de cliente a los controles de servidor

Cualquier control de servidor ASP.NET existente o personalizado se puede convertir en un control extensor AJAX de ASP.NET. Un control extensor es un control de servidor web que usa las capacidades de ECMAScript (JavaScript), DHTML y AJAX del explorador web para agregar caractersticas como la interactividad y la comunicacin asincrnica con el servidor. Para obtener ms informacin, vea los temas siguientes: Agregar funcionalidad de cliente a un control de servidor web Agregar la funcionalidad de Ajax a los controles ASP.NET

Vea tambin
Conceptos

Scripting de cliente con ASP.NET Controles de servidor web ASP.NET y funciones del explorador Modelo de eventos de control de servidor Web ASP.NET Identificacin de controles de servidor web ASP.NET

Cmo: Simular eventos del mouse y del teclado en el cdigo


Enviar comentarios

Los formularios Windows Forms proporcionan varias opciones para simular mediante programacin las entradas del mouse y del teclado.En este tema se proporciona informacin general sobre estas opciones.

Simular la entrada del mouse


La mejor manera de simular los eventos del mouse es llamar al mtodo OnEventName que provoque el evento del mouse que desee simular. Esta opcin normalmente slo es posible en los controles y formularios personalizados, porque los mtodos que provocan eventos estn protegidos y no se puede obtener acceso a ellos fuera del control o del formulario.Por ejemplo, en los pasos siguientes se muestra cmo simular el hacer clic con el botn secundario del mouse en el cdigo.

Para hacer clic con el botn secundario del mouse mediante programacin
1. 2. Cree un MouseEventArgs cuya propiedad Button se establezca en el valorMouseButtons .Right . Llame al mtodo OnMouseClick con este MouseEventArgs como argumento.

Para obtener ms informacin sobre controles personalizados, vea Desarrollar controles de formularios Windows Forms en tiempo de diseo. Hay otras maneras de simular las entradas del mouse.Por ejemplo, se puede establecer mediante programacin una propiedad de control que representa un estado que se establece normalmente mediante las entradas del mouse (como la propiedad Checked del control CheckBox), o se puede llamar directamente al delegado asociado al evento que desea simular.

Simular la entrada del teclado


Aunque puede simular la entrada del teclado mediante las estrategias descritas anteriormente para la entrada del mouse, los formularios Windows Forms tambin proporcionan la clase SendKeys para enviar a la ventana activa la informacin de haber presionado las teclas. Precaucin Si est previsto el uso internacional de la aplicacin con distintos teclados, el uso deSendKeys .Send podra causar resultados imprevistos y por tanto debe evitarse. Nota

La clase SendKeys se ha actualizado para que .NET Framework 3.0 pueda habilitar su uso en aquellas aplicaciones que se ejecuten en Windows Vista. La seguridad mejorada de Windows Vista (conocida como Control de cuenta de usuario o UAC) evita que la implementacin anterior funcione como se esperaba. La clase SendKeys es susceptible a problemas de tiempo, a lo que algunos programadores se han tenido que acomodar. La implementacin actualizada todava es susceptible a problemas de tiempo, pero es ligeramente ms rpida y puede requerir cambios en las soluciones.La clase SendKeys intenta utilizar primero la implementacin anterior y, si esto no tiene xito, utiliza la nueva implementacin.Como consecuencia, la clase SendKeys puede comportarse de manera distinta en sistemas operativos distintos. Adems, cuando la clase SendKeys utiliza la nueva implementacin, el mtodo SendWait no esperar a que se procesen los mensajes cuando se envan a otro proceso. Si la aplicacin confa en un comportamiento coherente sin tener en cuenta el sistema operativo, puede forzar que la clase SendKeys utilice la nueva implementacin agregando la configuracin de aplicacin siguiente al archivo app.config.

<appSettings> <add key="SendKeys" value="SendInput"/> </appSettings>


Para forzar que la clase SendKeys use la implementacin anterior, utilice en su lugar el valor "JournalHook".

Para enviar una pulsacin de tecla a la misma aplicacin


Llame al mtodo Send o SendWait de la clase SendKeys. El control activo de la aplicacin recibir las pulsaciones de tecla especificadas.En el ejemplo de cdigo siguiente se utiliza el mtodo Send para simular la pulsacin de la tecla INTRO cuando el usuario hace doble clic en el formulario. En este ejemplo se supone que un Form con un nico control Button tiene un ndice de tabulacin de 0.
VB C# C++ F# JScript Imprimir

' Send a key to the button when the user double-clicks anywhere ' on the form. Private Sub Form1_DoubleClick(ByVal sender As Object, _

ByVal e As EventArgs) Handles Me.DoubleClick ' Send the enter key to the button, which raises the click ' event for the button. This works because the tab stop of ' the button is 0. SendKeys.Send("{ENTER}") End Sub

Para enviar una pulsacin de tecla a otra aplicacin


Active la ventana de la aplicacin que recibir las pulsaciones de tecla y, a continuacin, llame al mtodo Send o SendWait. Debido a que no existe un mtodo administrado para activar otra aplicacin, se pueden utilizar mtodos nativos de Windows para forzar el desplazamiento del foco a otras aplicaciones.En el ejemplo de cdigo siguiente se utiliza la invocacin de plataforma para llamar a los mtodosFindWindow y SetForegroundWindow activar la ventana de la aplicacin Calculadora y, a continuacin, se llama al mtodo SendWait para enviar una serie de clculos a la aplicacin Calculadora.
VB C# C++ F# JScript Imprimir

' Get a handle to an application window. Declare Auto Function FindWindow Lib "USER32.DLL" ( _ ByVal lpClassName As String, _ ByVal lpWindowName As String) As IntPtr ' Activate an application window. Declare Auto Function SetForegroundWindow Lib "USER32.DLL" _ (ByVal hWnd As IntPtr) As Boolean ' Send a series of key presses to the Calculator application. Private Sub button1_Click(ByVal sender As Object, _ ByVal e As EventArgs) Handles button1.Click ' Get a handle to the Calculator application. The window class ' and window name were obtained using the Spy++ tool. Dim calculatorHandle As IntPtr = FindWindow("CalcFrame", "Calculator") ' Verify that Calculator is a running process. If calculatorHandle = IntPtr.Zero Then

MsgBox("Calculator is not running.") Return End If ' Make Calculator the foreground application and send it ' a set of calculations. SetForegroundWindow(calculatorHandle) SendKeys.SendWait("111") SendKeys.SendWait("*") SendKeys.SendWait("11") SendKeys.SendWait("=") End Sub

Ejemplo
En el siguiente cdigo de ejemplo se muestra la aplicacin completa de los ejemplos de cdigo anteriores.
VB C# C++ F# JScript Imprimir

Imports Imports Imports Imports

System System.Runtime.InteropServices System.Drawing System.Windows.Forms

Namespace SimulateKeyPress Class Form1 Inherits Form Private WithEvents button1 As New Button() <STAThread()> _ Public Shared Sub Main() Application.EnableVisualStyles() Application.Run(New Form1()) End Sub Public Sub New() button1.Location = New Point(10, 10) button1.TabIndex = 0 button1.Text = "Click to automate Calculator" button1.AutoSize = True Me.Controls.Add(button1) End Sub ' Get a handle to an application window.

Declare Auto Function FindWindow Lib "USER32.DLL" ( _ ByVal lpClassName As String, _ ByVal lpWindowName As String) As IntPtr ' Activate an application window. Declare Auto Function SetForegroundWindow Lib "USER32.DLL" _ (ByVal hWnd As IntPtr) As Boolean ' Send a series of key presses to the Calculator application. Private Sub button1_Click(ByVal sender As Object, _ ByVal e As EventArgs) Handles button1.Click ' Get a handle to the Calculator application. The window class ' and window name were obtained using the Spy++ tool. Dim calculatorHandle As IntPtr = FindWindow("CalcFrame", "Calculator") ' Verify that Calculator is a running process. If calculatorHandle = IntPtr.Zero Then MsgBox("Calculator is not running.") Return End If ' Make Calculator the foreground application and send it ' a set of calculations. SetForegroundWindow(calculatorHandle) SendKeys.SendWait("111") SendKeys.SendWait("*") SendKeys.SendWait("11") SendKeys.SendWait("=") End Sub ' Send a key to the button when the user double-clicks anywhere ' on the form. Private Sub Form1_DoubleClick(ByVal sender As Object, _ ByVal e As EventArgs) Handles Me.DoubleClick ' Send the enter key to the button, which raises the click ' event for the button. This works because the tab stop of ' the button is 0. SendKeys.Send("{ENTER}") End Sub End Class End Namespace

Você também pode gostar