Comment puis-je effacer toutes les données dans un asp.net page après la forme submition
J'ai écrit un long asp.net webform qui a environ 44 contrôles. Et les données sont enregistrées dans une base de données. Mon problème est que, après la soumettre le formulaire, je voudrais effacer TOUTES les données dans le ViewState et le formulaire de contrôle de contenu doit être effacée. Comment est-il possible sans manuellement(et fastidieux) claire chaque contrôle?
ViewState.Clear()
ne fonctionne pas
Page.EnableViewState = false
ne fonctionne pas.
Notez que, si vous rediriger vers une autre page après l'envoi, alors vous n'avez pas un problème. C'est un problème que dans le cas où vous restez sur la page après la soumission.
OriginalL'auteur Mr Lonely | 2012-12-14
Vous devez vous connecter pour publier un commentaire.
Si vous restez sur la même page, de la compensation sur le côté client ou depuis le code-behind sur la publication serait légèrement préférable à une redirection, que vous enregistrez un voyage vers le serveur, même s'il faudra plus de travail.
Aussi,
Response.Redirect(url)
jette unThreadAbortionException
, qui a un effet négatif sur les performances, donc si vous voulez aller à la redirection de route, pensezResponse.Redirect(url, false)
.Côté Client option: (le chemin le plus facile)
Code vidées de ce post.
Côté serveur option:
Vous pourriez faire une boucle par tous les contrôles pour les effacer. À la fin de la fonction qui traite de votre formulaire, ajouter:
La fonction:
En boucle par des Contrôles et des contrôles enfants est quelque chose qui revient beaucoup, de sorte que vous pourriez écrire une extension de la méthode pour ce faire. Quelque chose le long des lignes de ce que j'ai fait dans ce post (mais plutôt une fonction qui au lieu de cela renvoie une collection des tous les Contrôles). J'ai une méthode d'extension dans mon projet qui ne de cette, appelé GetAllChildren(), de sorte que le même code ci-dessus doit être exécuté comme ceci:
OriginalL'auteur MikeSmithDev
après l'insertion est terminée, il suffit d'utiliser
Response.Redirect
pour recharger la même page à partir de zéro.par exemple
Page.Response.Redirect(Page.Request.RawUrl)
OriginalL'auteur Raab
Essayer cette
OriginalL'auteur Omkar Hendre
Je vous suggère de ne pas jouer avec ViewState. Il est destiné à bien correspondre à l'état des commandes.
Au lieu de cela, il suffit de changer l'état des commandes, que ce soit en réorientant ou en désactivant les contrôles de manière explicite.
OriginalL'auteur
Désolé, je ne peux pas ajouter un commentaire pour Omkar Hendre réponse à cause de mon faible réputation.
Le code est bon et pour mon problème, j'ai besoin de mettre à la Page avant de la Forme.Les contrôles.
En passant, merci beaucoup! 🙂
OriginalL'auteur Asyraf Azmin