2009-04-15 9 views
15

J'ai un bouton ASP.NET mais récemment, je l'ai remplacé par un bouton HTML standard ... Ce que je dois faire est une publication sur une page ASP.NET et m'assurer qu'une méthode est appelée.Publication ASP.NET avec jQuery?

Le bouton précédent était un bouton ASP.NET, donc j'ai eu cet événement:

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

Mais j'utilisais un bouton avec JavaScript ALERT et moi avons récemment changé à une boîte de dialogue jQuery UI Modal mais il doesn n'attendez pas pour répondre à la question .. la publication se produit immédiatement ... alors j'ai décidé de passer à un bouton HTML standard ... mais je dois publier sur la page ASP.NET et appeler une méthode comme.

Si je viens Postback il ne sera pas appeler le nettoyage

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

Si vous êtes tombé sur ceci à partir de google consultez ma réponse. (Aucun des postés travaillé pour moi). –

Répondre

6

Alors que vous pouvez effectuer des publications avec JQuery, il peut être préférable d'appeler un nous Méthode b (service Web dans votre page) L'appel peut également être plus rapide car vous ne publiez pas toute la page ViewState.

+4

Cela fonctionnera, mais il y a un moyen de le faire avec des publications, de sorte que vous n'avez pas à déclarer une méthode de service Web. –

+0

FWIW, Chrome affiche un avertissement de logiciel malveillant sur cette URL – dlchambers

+0

Le lien ne fonctionne plus. Chrome ne m'a pas fait passer parce que le site contient apparemment des logiciels malveillants – Ortund

4

Vous devez définir le champ caché __EVENTTARGET à une valeur appropriée si vous voulez déclencher le gestionnaire d'événements sur postback. Je le ferais d'une manière différente, cependant. Placez les boutons ASP dans votre boîte de dialogue modale auxquels le gestionnaire d'événements est associé. Faites en sorte que le gestionnaire de clics qui apparaît dans la boîte de dialogue renvoie la valeur false (afin que la publication ne soit pas effectuée à partir de ce bouton). De cette façon, votre formulaire est renvoyé à partir d'un bouton ASP et le gestionnaire, y compris le paramètre de champ masqué côté client, est appelé automatiquement.

0

Vous devriez être en mesure d'arrêter la publication avec tout JS attaché à l'événement button onclick, qu'il s'agisse d'un bouton HTML WebControl ou standard, en retournant false.

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

15

Voir si cela aide: http://www.codeproject.com/KB/aspnet/sample.aspx.

Fondamentalement, vous déclarez une balise d'ancrage factice:

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

Dans votre code derrière, vous devez déclarer une méthode foo:

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

Ensuite, vous pouvez appeler la fonction onclick de cette ancre avec cette javascript:

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

Ou c'est une autre option: http://blogs.microsoft.co.il/blogs/gilf/archive/2008/10/04/asp-net-ajax-pagemethods.aspx – David

0

Je suis tombé sur ce post via google, donc je soupçonne que d'autres le feront aussi. J'ai essayé les méthodes ici qui n'ont pas fonctionné pour moi. Je vais expliquer ma solution, mais d'abord un aperçu de ce que j'essaie de faire.

J'ai un formulaire qui utilise jQuery ajax pour publier des données sur mon webservice qui à son tour met à jour ma base de données.J'ai un formulaire de téléchargement d'image, pour des raisons de sécurité, vous ne pouvez pas obtenir le chemin complet du fichier à utiliser dans l'appel ajax pour passer au webservice ... donc cela doit être fait avec une publication régulière asp.net. Donc, mon dilemme est de savoir comment faire les deux. Ce que j'ai fait était d'utiliser ma fonction ajax pour mettre à jour la base de données, une fois que j'ai obtenu un succès du webservice, je dis au formulaire de faire une publication sur une certaine méthode dans le codebehind, puis de la rediriger vers n'importe où. Ceci est essentiellement la même chose que d'assigner une fonction de clic à un contrôle asp.net, sauf qu'au lieu de cliquer sur le bouton je dis javascript pour l'exécuter. atest correspond à l'ID affecté au contrôle asp.net.
Remarque: le <%=myclientid.ClientID %> ne fonctionnera pas ici.

+1

<% = myclientid.ClientID%> ne fonctionne pas, mais <% = myclientid.UniqueID%>. –

Questions connexes