Désactiver la réactualisation de la page cliquez sur le bouton ASP.NET
J'ai une page asp bouton qui ressemble à ceci:
Par défaut.aspx
<asp:button id="button1" runat="server" Text="clickme" onclick="function" />
Par défaut.aspx.cs
protected void function(object sender EventArgs e)
{
//Do some calculation
}
Cependant, chaque fois que j'appuie sur le bouton, l'ensemble de la page est actualisée. J'ai regardé sur ce site et trouvé beaucoup de solutions, mais aucune ne fonctionne vraiment pour mon projet. Voici les solutions proposées:
- ensemble onclick="return false;" //mais alors, comment puis-je exécuter la fonction dans le code-behind?
- utiliser !IsPostBack dans Page_Load //mais la page est encore renouvelle complètement. Je ne veux pas Page_Load à être appelé à à tous.
- Désactiver AutoEventWireup. //faire ce vrai ou faux n'est pas de faire une différence.
Quelqu'un aurait-il une solution à ce problème, ou est-il vraiment impossible?
utiliser un callback, ou ajax, ou un panneau de mise à jour
Dépend vraiment de ce que vous voulez faire. Regarder AJAX comme une solution. Aussi, vous pouvez utiliser un panneau de mise à jour qui n'utiliser AJAX.
Merci pour les réponses grands. J'ai utilisé un panneau de mise à jour et il a parfaitement fonctionné! Pour les autres débutants comme moi, cette vidéo de Dan Wahlin m'a vraiment aidé: youtube.com/watch?v=0hnW8sPJpPQ.
Dépend vraiment de ce que vous voulez faire. Regarder AJAX comme une solution. Aussi, vous pouvez utiliser un panneau de mise à jour qui n'utiliser AJAX.
Merci pour les réponses grands. J'ai utilisé un panneau de mise à jour et il a parfaitement fonctionné! Pour les autres débutants comme moi, cette vidéo de Dan Wahlin m'a vraiment aidé: youtube.com/watch?v=0hnW8sPJpPQ.
OriginalL'auteur user3685285 | 2014-08-27
Vous devez vous connecter pour publier un commentaire.
Je place le contrôle à l'intérieur d'un panneau de mise à Jour.
Pour ce faire, vous aussi, vous avez besoin d'un gestionnaire de script au-dessus d'elle, donc quelque chose comme ceci:
si un contrôle à l'intérieur du panneau de mise à jour ne une publication, il suffira de recharger la partie de la page à l'intérieur de la upate panneau.Ici est un lien que vous pouvez trouver utile de le site MSDN.
OriginalL'auteur psoshmo
Je pense qu'il y a un malentendu fondamental sur la manière de l'ASP.Net des œuvres.
Lorsqu'un utilisateur demande une page web, une instance de votre classe de la Page est créée. L'ASP.Net cadre traverse le cycle de vie de page avec cette page de l'instance afin de générer le code html. La réponse html est envoyé au navigateur de l'utilisateur. Lorsque le navigateur reçoit la réponse, il affiche la page pour l'utilisateur. Voici la clé: le temps de rendu est terminé, votre page d'instance de classe a probablement été déjà collectées par les .Net garbage collector. C'est parti, pour ne jamais être vu à nouveau.
À partir de maintenant, tout votre page qui doit s'exécuter sur le serveur, y compris votre méthode, est le résultat d'une nouvelle requête http à partir du navigateur. L'utilisateur clique sur le bouton, une nouvelle requête http est posté sur le serveur web, le ensemble cycle de vie de page fonctionne à nouveau sur une nouvelle instance de la classe de la page, et un tout nouveau réponse est envoyée au navigateur d'être re-rendus à partir de zéro. C'est comment ASP.Net (et à peu près toutes les autres technologies du web) travaille à son cœur.
Heureusement, il ya certaines choses que vous pouvez faire pour obtenir autour de cette. Une option est de mettre la plupart de votre Page_Load code dans un
if (!IsPostBack) { }
bloc. Une autre option est de mettre en place votre méthode avec les[WebMethod]
l'attribut et de faire une requête ajax à la méthode de la touche. D'autres options incluent l'appel de services web à partir d'un code javascript personnalisé et ASP.Net contrôles UpdatePanel.Ce qui fonctionne le mieux pour vous dépend de ce que d'autres choses qui sont sur la page que l'utilisateur pourrait avoir changé.
OriginalL'auteur Joel Coehoorn
Qui est un comportement normal pour asp.net, vous êtes en fait à l'origine un
postback
de la page pour que l'événement associé à être appelé sur le serveur.Je suggère de travail avec la mise à jour des panneaux de mais si vous avez juste besoin quelque chose se passe sur le backend sans lui causer aucun changement majeur sur la page web, je voudrais utiliser jquery et un service web. La raison principale pour moi est que la mise à jour des panneaux de créer d'énormes viewstate objets.
Jetez un oeil ici pour asp.net ajax : http://www.asp.net/ajax
Et ici pour un exemple de jquery et de la wcf : http://www.codeproject.com/Articles/132809/Calling-WCF-Services-using-jQuery
OriginalL'auteur Ted