[Nota: este párrafo no tiene nada que ver con el contenido del título y se puede omitir] Después de ver dos episodios de Stargate y ducharme, finalmente decidí comenzar a escribir este artículo. Este es mi primer artículo técnico verdaderamente original. Independientemente del contenido técnico, finalmente he dado este paso. De hecho, abrí muchos blogs, desde el primer autobús del campus hasta Blog Park y mi blog Sina para quejarme. De hecho, el propósito original de iniciar un blog era registrar mi proceso de aprendizaje mientras escribía programas. Pero luego se convirtió en algo que solía quejarse. Esto puede considerarse como una consecuencia de mi incapacidad para concentrarme en estudiar. Sin embargo, como dice el refrán, no es demasiado tarde para solucionar el problema, a partir de este artículo. más centrado y más centrado. Guiado por este pensamiento concentrado, finalmente comencé a escribir programas correctamente nuevamente recientemente. Esta vez realmente dejé las cosas que no quería hacer y me concentré en escribir el código C # que me gusta en el lenguaje de programación que conozco. Mis favoritos son C# y Javascript. Este último es un lenguaje de programación. Para ser precisos, me enamoré de él recientemente. Al principio pensé que era como el Basic que jugaba cuando era niño, pequeño y simple, pero resulta. Parece que no es así, aunque también es un lenguaje de programación como VBS, en realidad hay más contenido oculto bajo la apariencia del lenguaje C. Ahora vayamos al grano. Me gusta la plataforma .NET, no sé por qué cuando usé el lenguaje C # por primera vez para escribir código en 2001, pensé que era muy hermoso, pero luego me enamoré de él debido a problemas ambientales. En ese momento, se interrumpió por un tiempo hasta 2004. Lo retomé de nuevo, pero durante más de un año, estuve sacando montones de controles y luego ajustándolos en el panel de propiedades. Parecía que había olvidado qué. La Web se veía originalmente, y finalmente hay algo que ha cambiado mis recuerdos---- Ajax.
Los marcos de desarrollo Ajax están en todas partes. De hecho, cuando se lanzó ASP.NET 2.0, se integró contenido similar internamente en algunos controles de datos como GridView. En un artículo de MSDN Magazine de enero de 2005, "Devolución de llamada de script personalizada". ASP.NET" (versión china | inglés) me hizo darme cuenta del encanto de las llamadas asincrónicas en asp.net (el método de implementación se limita a la versión beta1, sobre la parte de devolución de llamada del script beta1, beta2 y la versión oficial Son diferentes de tiempo A veces, aquellos que estén interesados pueden consultar el contenido de MSDN publicado recientemente), pero en ese momento solo jugué con Atlas, así que no le presté mucha atención. Discutí ASP conmigo hace algún tiempo. Al implementar ajax en .net, mencioné que la implementación de atlas es demasiado engorrosa y que lo que quiere implementar son solo unos pocos contenidos muy pequeños que no tienen por qué ser tan problemáticos. No estoy familiarizado con el marco ajax de .NET aparte de estos. Naturalmente, recordé el mecanismo de devolución de llamada del script incorporado. Usando el proyecto de un amigo (con su propio consentimiento), escribimos mucho código sobre esto. De repente descubrí un problema, es decir, el código estaba demasiado desordenado. Cada página es similar y solo se puede pasar un parámetro de cadena. Además de la interacción, tenemos que usar marcos en línea para mostrar algunos datos costosos. Hace dos días fui a Haitu y compré un libro "Programación de lenguaje avanzado Ajax". Después de leer parte de él, de repente quise entender cómo implementar la devolución de llamada del script en asp.net 2.0. De hecho, mirando hacia atrás, muchos lugares del artículo "Devolución de llamada de script personalizado en ASP.NET" se han explicado muy claramente. Se puede decir que en ese momento, muchas cosas estaban en las nubes y los usuarios solo pueden ver el efecto. Primero publicaré lo que creo que es la implementación más simple y luego la analizaré.
Cree una nueva página Default.aspx, agregue un control CheckBox en la página y luego abra el archivo Default.aspx.cs. La clase _Default agrega tres interfaces heredadas, ICallbackContainer, ICallbackEventHandler e INamingContainer:
[Código 1]
#region Miembro de ICallbackContainer.
cadena pública GetCallbackScript (IButtonControl botónControl, argumento de cadena)
{
throw new Exception("El método u operación no está implementado.");
}
#endregion
#region Miembros de ICallbackEventHandler
temperatura de cadena;
cadena pública GetCallbackResult()
{
//lanzar nueva excepción("Error de muestra");
temperatura de retorno;
}
público vacío RaiseCallbackEvent (cadena eventArgument)
{
temp = "_____" + eventArgument + "es exitoso._____";
}
#regiónfinal
Vaya al método Page_Load de la página Default.aspx.cs y agregue el siguiente código:
[Código 2]
Page_Load vacío protegido (remitente del objeto, EventArgs e)
{
cadena temp = Page.ClientScript.GetCallbackEventReference(this, "arg", "Callback", "context", "OnError", true);
script de cadena = "función CallServer(arg,context){" + temp + "}";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "abc", script, verdadero);
CheckBox1.Attributes.Add("onclick", "CallServer('Llamo al servidor ','contexto');");
}
Después de editar el código CS, abra el archivo Default.aspx y agregue el siguiente código entre <head>...</head>:
[Código 3]
<tipo de script="texto/javascript">
función OnError(err,contexto)
{
alerta(errar);
}
función Devolución de llamada (arg, contexto)
{
alerta(arg);
}
</script>
El control CheckBox aquí se puede abrir de manera informal y se puede cambiar si es necesario. Sin embargo, es posible que desee prestar atención al usar el control Button. Activará el evento OnSubmit de forma predeterminada, por lo que es posible que deba configurarlo o usar el. Control HTML directamente. El código anterior puede considerarse como una implementación mínima de devolución de llamada de script, y todos son necesarios.
Los controles que utilizan devoluciones de llamada básicas deben implementar tres interfaces: ICallbackContainer, INamingContainer e ICallbackEventHandler. De hecho, INamingContainer no tiene contenido de interfaz que deba implementarse. Simplemente "identifica el control de contenedor que crea un nuevo espacio de nombres de ID dentro de la jerarquía de control del objeto Página" (citado de MSDN). En cuanto a la interfaz ICallbackContainer, la explicación dada en MSDN (versión china) es relativamente vaga. Algunos artículos relacionados también presentan devoluciones de llamada de script e interfaces ICallbackEventHandler. Debido a que aquí usamos páginas como base para las devoluciones de llamada, no usamos este método. La interfaz a implementar es GetCallbackScript, pero si está encapsulando su propio control Ajax, este método es muy útil. Aquí solo usamos el método implementado por ICallbackEventHandler para procesar datos, porque en el método Page_Load registré un método CallServer y luego. Se activa en el evento OnClick adjunto a CheckBox, para que podamos comprender un proceso de llamada más claro.
Más tarde [Código 3] implementé dos métodos de Javascript, uno se usa para manejar errores de llamada y el otro se usa para manejar la información devuelta después de que la llamada fue exitosa. En [Código 1], hay un fragmento de código que genera una excepción que comenté. A través de este código, puedo simular una llamada al método OnError.
Hasta aquí hemos visto cómo implementar esta llamada. Para decirlo sin rodeos, esta es en realidad una forma relativamente avanzada de arrastrar controles, pero ¿cómo se implementa? ¿Por qué no veo nada sobre XmlHttpRequest? (Creo firmemente que esta es la mejor manera de implementar Ajax, porque este código se puede usar en cualquier navegador que admita Javascript. Creo que no tiene nada que ver con la puerta secreta)
Compilar, ejecutar....
Al hacer clic en la casilla de verificación en la página en ejecución, se mostrará "___Llamé al servidor correctamente.___". ¿Cómo se ejecuta esto? De hecho, simplemente haga clic en "Ver código fuente" en esta página. Hay un pequeño secreto oculto aquí. Se generan automáticamente tres bloques de script en la página. Uno es __doPostback, que se utiliza para manejar la devolución de datos de eventos de control del servidor. es el método CallSerer que acabamos de registrar usando ClientScript y también hay una etiqueta de enlace para un script externo. Esta es la clave a la que se conecta:
<script src="/TechTest/WebResource.axd?d=DE9YrizlDDq8OUlo_3rQgA2&t=632919546726295408" type="text/javascript"></script>
Abra la dirección de acuerdo con la dirección indicada por el SRC anterior y podrá obtener una Archivo WebResource.axd (completa la dirección de conexión en una herramienta de descarga como Thunder y podrás descargarlo. Cuando lo abras, podrás ver que este archivo en realidad contiene algo de código Javascript:
prueba)
.
{
xmlRequest = nueva XMLHttpRequest();
}
captura (e)
{
intentar
{
xmlRequest = nuevo ActiveXObject("Microsoft.XMLHTTP");
}
captura (e)
{
}
}
¡El código parece tan familiar!
si (!useAsync)
{
si (__synchronousCallBackIndex! = -1)
{
__pendingCallbacks[__synchronousCallBackIndex] = nulo;
}
__synchronousCallBackIndex = callbackIndex;
} ¿
Dentro de esto? ¿No es esto lo que maneja la opción de llamada asincrónica en el método Page.ClientScript.GetCallbackEventReference?
Hay muchos códigos útiles en él. Estoy investigando.................
Hay muchos métodos además de estos. Sin rodeos, es un Ajax muy simple. La encapsulación del marco incluye el procesamiento de eventos de control y el procesamiento de solicitudes de devolución. Podemos hacer otras encapsulaciones sobre esta base, de modo que pueda encapsularse directamente en un control .NET Ajax simple como un componente. NET durante el desarrollo. Solución ligera.
De hecho, la tecnología Java, .NET o PHP son encapsulaciones avanzadas de HTTP en el lado del servidor, al igual que la tecnología CGI que usamos hace mucho tiempo, y ahora la tecnología de la Web es más avanzada y comprende Cuando se trata de Con el mecanismo operativo interno de .NET, podemos romper con algunas restricciones y reescribir algunas páginas o controles nosotros mismos para construir nuestro propio entorno de desarrollo Ajax.
Solía ser ingeniero de control. Creo que la encapsulación es una tecnología necesaria en la era de las grandes fábricas. Sin embargo, los programadores aún necesitan profundizar y comprender verdaderamente el contenido detrás del funcionamiento del programa para poder desarrollar mejor la alta calidad. productos.