2009-04-15 40 views
15

Tengo un botón ASP.NET pero recientemente lo reemplacé con un botón HTML estándar ... Lo que necesito hacer es una devolución de datos a una página ASP.NET y asegurar que se llame a un método.Postback de ASP.NET con jQuery?

El botón anterior era un botón de ASP.NET, así que tuve este evento:

Protected Sub btnCancelar_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
    UtilTMP.DisposeObjects() 
    Server.Transfer("~\Forms\test.aspx", True) 
End 

Pero yo estaba usando un botón con una alerta de JavaScript y recientemente he cambiado a un cuadro de diálogo modal jQuery UI pero doesn No espere a que responda la pregunta ... la devolución de datos se realizó inmediatamente ... así que decidí cambiar a un botón HTML estándar ... pero necesito enviar de vuelta a la página ASP.NET y llamar a un método como.

Si tan sólo la devolución de datos no va a llamar a la limpieza

Protected Sub Cleanup() 
    UtilTMP.DisposeObjects() 
    Server.Transfer("~\Forms\test.aspx", True) 
End 
+0

Si te encontraste esto de google echa un vistazo a mi respuesta. (Ninguno de los publicados trabajó para mí). –

Respuesta

6

Si bien se puede hacer devoluciones de datos con jQuery, podría ser mejor llamar a un nosotros método b (servicio web que está en su página). La llamada también podría ser más rápida porque no está publicando toda la página ViewState.

+4

Esto funcionará, pero existe una forma de hacer esto con las devoluciones de datos, por lo que no tiene que declarar un método de servicio web. –

+0

FWIW, Chrome muestra una advertencia de malware en esa URL – dlchambers

+0

El enlace ya no funciona. Chrome no me llevó porque el sitio aparentemente contiene malware. – Ortund

4

Es necesario configurar el campo oculto __EVENTTARGET a un valor apropiado si desea activar el controlador de eventos de devolución de datos. Sin embargo, lo haría de otra manera. Pon los botones ASP en tu cuadro de diálogo modal que tienen asociado el controlador de eventos. Haga que el controlador de clic que aparece en el cuadro de diálogo devuelva falso (para que la devolución no se realice desde ese botón, haga clic). De esta forma, su formulario se publica desde un botón ASP y el controlador, incluida la configuración del campo oculto del lado del cliente, se invoca automáticamente.

0

Debería poder detener la devolución de datos con lo que JS esté asociado al evento de clic de botón, independientemente de si es un control web o un botón estándar de HTML, al devolver falso.

E.g. <input type="image" id="test" onclick="doWhatever();return false;" />

15

Ver si esto ayuda: http://www.codeproject.com/KB/aspnet/sample.aspx.

Básicamente, se declara una etiqueta de anclaje dummy:

<a id="anchorId" runat="server" onclick="return true" onserverclick="foo"></a> 

En su código detrás, tiene que declarar un método foo:

protected void foo(object sender, EventArgs e) 
{ 
    // Do something here 
} 

A continuación, puede invocar la función onclick de esta ancla con este javascript:

document.getElementById('anchorId').click() 
+0

O esta es otra opción: http://blogs.microsoft.co.il/blogs/gilf/archive/2008/10/04/asp-net-ajax-pagemethods.aspx – David

0

Me encontré con esta publicación a través de google, así que sospecho que otros también lo harán. Probé los métodos aquí que no funcionaron para mí. Explicaré mi solución, pero primero un resumen de lo que estoy tratando de hacer.

Tengo un formulario que utiliza jQuery ajax para publicar datos en mi servicio web, que a su vez actualiza mi base de datos.Tengo un formulario de carga de imágenes, por razones de seguridad no se puede obtener la ruta completa del archivo para usar en la llamada ajax para pasar al servicio web ... por lo que debe hacerse con una devolución de datos asp.net regular. Entonces mi dilema es cómo hacer ambas cosas. Lo que hice fue usar mi función ajax para actualizar la base de datos. Una vez que obtuve el éxito del servicio web, le dije al formulario que hiciera una devolución de datos a cierto método en el código subyacente y luego lo redireccionara a donde sea. $("#Button1").click(function() { javascript: __doPostBack('ctl00$ContentPlaceHolder1$atest', '') });

Esto es básicamente lo mismo que asignar una función de clic a un control asp.net, excepto que en lugar de hacer clic en el botón le digo a javascript que lo ejecute. atest sería la identificación que asigné al control asp.net.
Nota: el <%=myclientid.ClientID %> no funcionará aquí.

+1

<% = myclientid.ClientID%> no funciona, pero <% = myclientid.UniqueID%> sí lo hace. –

Cuestiones relacionadas