11
votes

Comment intercepter tout post-pack dans une page? - ASP.NET

Je veux intercepter les post-packs dans la page actuelle avant cela se produit. Je veux faire une manipulation personnalisée avant que un message soit servi. Des idées comment faire ça?


3 commentaires

S'il vous plaît soyez plus spécifique: qu'entendez-vous par «avant le post-plan»?


Vous dites dans vos exigences que vous souhaitez intercepter un publication quand cela survient, mais dans vos commentaires aux intervenants, vous dites que vous voulez l'intercepter avant . Lequel veux-tu? Voulez-vous le faire du côté client ou du serveur?


Désolé pour la confusion. Édité la question pour préciser. Je veux l'intercepter avant que cela ne se produise. Je veux le faire au serveur. Bien que je puisse être intéressé de savoir comment le faire du côté client aussi.


6 Réponses :


0
votes

Pas sûr, mais je pense que vous recherchez ..

if (Page.IsPostBack)
    { 
    }


1 commentaires

Je veux faire des manipulations avant que un post-pack soit servi. Pas après que le post-plan soit arrivé. J'espère que vous l'obtenez.



1
votes

page.ispospostback est votre ami.


1 commentaires

Je veux faire des manipulations avant que un post-pack soit servi. Pas après que le post-plan soit arrivé. J'espère que vous l'obtenez.



1
votes

Vous pouvez rechercher un publication dans l'un des événements de page de votre formulaire.

Si vous souhaitez prendre des mesures sur le post-colt qui implique la création de contrôles ou de la manipulation de la vietate, vous voudrez peut-être entrer sur un événement antérieur comme page_init. P>

Essayez ceci: P>

protected void Page_Init(object sender, EventArgs e)
    {
        if (Page.IsPostBack)
        {
            //Check for your conditions here, 

            if (Page.IsAsync)
            {
                //also you may want to handle Async callbacks too:
            }
        }
    }


1 commentaires

Je veux faire des manipulations avant que un post-pack soit servi. Pas après que le post-plan soit arrivé. J'espère que vous l'obtenez.



2
votes

Pour obtenir le message avant une page, vous pouvez créer un HTTPHANDLER et implémenter la fonction processRequest .

check Ce lien Scott Hanselman pour un bon blog post sur la façon de le faire (y compris le code d'échantillon).


0 commentaires

22
votes

Il y a quelques éléments que vous pouvez faire pour intercepter un publication sur le client.

La fonction __dopostback ressemble à ceci: p> xxx pré>

avis qu'il appelle "TheForm .Submit () "Avant de faire le post-plan. Cela signifie que si vous affectez votre formulaire une fonction JavaScript OnSubmit, elle sera toujours appelée avant chaque poteau. P> xxx pré>

alternativement, vous pouvez réellement remplacer la fonction __dopostback et le remplacer par le tien. Ceci est une vieille astuce qui a été utilisée dans ASP.NET 1.0 JOURS. P>

var __original= __doPostBack;
__doPostBack = myFunction();


2 commentaires

Parfait! Travaillé exactement comme je veux.


Comment __dopostback = mycosction (); travail? Ne devrait pas être __dopostback = mycosction;?



6
votes

Utilisez les options suivantes

toutes les options fonctionne avec Formulaires compatibles AJAX et formulaires simples.
retourner faux pour annuler soumettre dans tout soumission-gestionnaire. xxx

équivalent JavaScript - N'utilisez pas ce code avec le code précédent simultanément xxx

Et si vous voulez un contrôle complet sur __dopostback Mettez ce script à côté de votre étiquette de formulaire xxx

testé avec asp.net 4.0


0 commentaires