Mi hermano recientemente se vio obligado a usar Ajax, así que usó asp.net ajax para implementarlo. Bueno, fue simple y se hizo con unos pocos clics... Pero el problema surgió de inmediato y entró en conflicto con mi URL. reescribiendo Mi módulo de reescritura de URL lo escribí yo mismo. Hice un filtro y resolví el problema de la ubicación de envío incorrecta del formulario del servidor, pero ahora, siempre que use ajax para la devolución de datos por segunda vez, se informará un error 404. , Llegué a cnblogs y vi a alguien hablando sobre este problema, y de hecho dijo que se puede resolver modificando la acción. Estaba muy confundido, resolví el problema de la acción hace mucho tiempo y parecía ser lo mejor. solución... Entonces abrí un programa de enlace, capturé la dirección de publicación final de cada IE y descubrí que después de la segunda devolución de datos de ajax, su dirección de envío (no la acción de la página, sino algo llamado form._initialAction generado). por js dentro de aspnet ajax) será Por supuesto, habrá problemas si lo cambia a una ruta relativa, por lo que si encuentra que la reescritura de la URL entra en conflicto con ajax, preste atención para probar este problema y no deje pasar las cosas. en línea antes de descubrir el problema... No creas que todo estará bien si modificas la acción... De hecho, creo que este problema es un defecto de "ASP.NET AJAX RC1". ¿No sería mejor ser honesto y simplemente actuar en lugar de hacer tantas cosas extrañas? Por supuesto, no entiendo sus principios de diseño. Supongo que tiene sus propias razones. El código relevante para resolver este problema es el siguiente:
<!--Ajax Script Manager-->.
<asp:ScriptManager ID="ScriptManager1" runat="servidor"></asp:ScriptManager>
<tipo de script="texto/javascript">
Sys.Application.add_load(función()
{
formulario var = Sys.WebForms.PageRequestManager.getInstance()._form;
var href = ventana.ubicación.href;
si(href.indexOf("?") > 0)
{
href += "&a=" + Math.random();
}
demás
{
href += "?a=" + Math.random();
}
form._initialAction = href;
formulario.acción = href;
});
</script>
Es posible que haya notado que este código agrega un número aleatorio a la dirección. En realidad, es para resolver el último problema (conflicto de caché del navegador), pero no se resuelve bien. . .
Bien, el conflicto de reescritura se resolvió y el segundo problema volvió a ocurrir. . . Después de especular, creo que es un problema de caché del navegador. Creé una función para agregar y eliminar etiquetas. Agregar es colocar un ImageButton en el Repetidor a través de su evento de clic y usar CommandName para agregar la etiqueta actual. enviado de vuelta y eliminado En este momento, el problema ocurrió después de agregar varias etiquetas y hacer clic en una de ellas para eliminar, la lista de etiquetas en el panel de actualización volvió al estado antes de agregar la primera, por lo que sospeché que estaba almacenada en caché. El problema del navegador, agregué estúpidamente Response.Cache.SetNoStore();
Response.Cache.SetLastModified(DateTime.Now); Espero que pueda resolver el problema, pero en realidad es inútil, jaja, así que usé el código js anterior para agregar un número aleatorio al final de la URL al asignar el formulario. _initialAction número, el resultado aún no es válido. . . Supongo que el problema ocurre cuando este número aleatorio no obtiene el efecto todas las veces, pero realmente no tengo tiempo para comprender en profundidad los principios de asp.net ajax, así que espero que los amigos que sepan cómo resolver este problema puedan ayúdame a resolverlo primero, Xiaodi Vuelve y estúdialo de nuevo.
http://www.cnblogs.com/cnlamar/archive/2007/01/08/614671.html