web-dev-qa-db-fra.com

Publication ASP.NET avec jQuery?

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

Le bouton précédent était un bouton ASP.NET, j'ai donc 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 une ALERTE JavaScript et j'ai récemment changé pour une boîte de dialogue Modal jQuery UI mais il n'attend pas que je réponde à la question .. la publication se produit immédiatement ... j'ai donc décidé de passer à un HTML standard bouton ... mais je dois poster sur la page ASP.NET et appeler une méthode comme.

Si je viens de poster ça n'appellera pas le nettoyage

Protected Sub Cleanup()
    UtilTMP.DisposeObjects()
    Server.Transfer("~\Forms\test.aspx", True)
End 
15
mark smith

Bien que vous puissiez effectuer des publications avec JQuery, il peut être préférable d'appeler une méthode Web (service Web qui se trouve dans votre page). L'appel pourrait également être plus rapide car vous ne postez pas la page entière ViewState.

6
Chris Brandsma

Voyez 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 invoquer la fonction onclick de cette ancre avec ce javascript:

document.getElementById('anchorId').click()
17
David

Consultez cet article

http://www.deviantpoint.com/post/2009/03/12/Using-jQuery-UI-Dialogs-for-confirmation-windows.aspx

L'idée de base est de placer la fonction de rappel dans un champ caché et d'exécuter un eval sur la $(this).dialog('close');

Je l'ai utilisé pour le faire fonctionner dans une Gridview, donc si vous voulez savoir comment le faire, laissez un commentaire.

4
David Basarab

Vous devez définir le champ masqué __EVENTTARGET sur une valeur appropriée si vous souhaitez déclencher le gestionnaire d'événements lors de la publication. Je le ferais cependant d'une manière différente. Mettez ASP dans votre boîte de dialogue modale auxquels le gestionnaire d'événements est associé. Demandez au gestionnaire de clics qui apparaît dans la boîte de dialogue de renvoyer false (afin que la publication ne se fasse pas à partir de ce clic de bouton)) . De cette façon, votre formulaire est publié à partir d'un bouton ASP et le gestionnaire, y compris le paramètre de champ masqué côté client, est appelé automatiquement.

4
tvanfosson

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 ne fonctionnaient pas 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 de fichier complet à utiliser dans l'appel ajax pour passer au webservice ... il doit donc être fait avec une publication asp.net régulière. Mon dilemme est donc 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 un postback vers une certaine méthode dans le codebehind, puis de rediriger vers n'importe où. $("#Button1").click(function () { javascript: __doPostBack('ctl00$ContentPlaceHolder1$atest', '') });

C'est essentiellement exactement 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 de l'exécuter. atest serait l'ID attribué au contrôle asp.net.
Noter la <%=myclientid.ClientID %> ne fonctionnera pas ici.

0
The Muffin Man

Vous devriez pouvoir arrêter la publication avec tout ce que JS est attaché à l'événement onclick du bouton, qu'il s'agisse d'un bouton WebControl ou d'un bouton HTML standard, en renvoyant false.

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

0
Andrew Corkery