type net mvc examples ejemplos clasico asp asp.net asp.net-ajax

asp.net - net - RegisterClientScriptBlock dentro de la llamada al método AJAX



asp.net ajax download (5)

Estoy tratando de registrarClientScriptBlock en un método que solo se llama a través de una llamada AJAX. En realidad, no parece registrar el script en la página y supongo que es porque en realidad no está recargando toda la página. ¿Hay alguna manera de registrar javascript en una página desde dentro de una llamada a un método ajax?

protected void MyMethod(object sender, EventArgs e) { // This method only called via AJAX call Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "resize", "alert(''here'');", true); }


Con páginas habilitadas para AJAX, debe usar ScriptManager para registrar scripts:

ScriptManager.RegisterClientScriptBlock(Page, typeof(MyPage), "MyScript", "GoStuff()", true)

Puede usar esto para registrar todas sus secuencias de comandos (carga original, devolución de datos, devolución de datos AJAX).


Por lo que sé de esto, se vería obligado a llamar a este método a través de un PostBack y no una llamada ajax. Puede haber OTRAS formas de hacerlo, pero no es posible con Page.ClientScript ....


En general, cuando se carga javascript externo después de agregar un elemento innerHTML con un bloque que contiene dicho script, se necesita evaluar (evaluar) el script para que funcione correctamente y se presente en el documento cargado actualmente.

Sugeriría hacer uno de los siguientes:

Use una herramienta externa como la utilidad YUI get, que se supone que habilita tal comportamiento o realice una evaluación para los scripts usted mismo como este


Funciona si especifica el UpdatePanel está actualizando en la devolución de llamada AJAX. Por ejemplo:

ScriptManager.RegisterClientScriptBlock(UpdatePanelMain, typeof(UpdatePanel), UpdatePanelMain.ClientID, "document.getElementById(''imgLoading'').style.display = ''none'';" + "document.getElementById(''divMultiView'').style.display = ''inline'';", true);


Si hay alguien más como yo, y la respuesta aceptada TODAVÍA no funcionará para ti, entonces no busques más.

Echa un vistazo a este enlace : una clase simple que muestra una alerta de Javascript sin importar si estás en la carga de la página, descarga, solicitud de AJAX, etc.

WebMsgBox.Show("Your message here");