2009-04-03 8 views
0

J'ai rencontré un petit barrage routier ce matin avec HandleError. Les utilisateurs sont dirigés correctement vers /Views/Shared/Error.aspx. Cette vue utilise une page principale qui s'affiche également très bien. Il enregistre également les détails de ViewData.Model.Exception dans sa méthode Page_Load. Une utilisation acceptable de codebehind à mon avis.HandleError avec une vue partielle fortement typée

Mon problème est le suivant: La page contient une vue partielle fortement typée qui contient certaines données d'entrée de l'utilisateur. Je souhaite conserver l'accès à ces données même après l'apparition de l'exception - donc l'utilisateur n'est pas doublement pénalisé pour notre exception (étant présenté avec un message d'erreur ET perdant leurs valeurs de formulaire).

Existe-t-il un moyen d'accomplir ceci en utilisant HandleError ou un autre attribut réutilisable?

Répondre

0

La solution la plus simple serait l'arrière-bouton, et il n'a pas besoin d'un code :-)

Si vous avez besoin solution basée sur le code, je pense que vous devez persister vos données de formulaire avant que l'utilisateur atterrisse sur Error.aspx. À ce stade, une redirection s'est produite et toutes les données de demande seraient perdues. Ensuite, lorsque l'utilisateur accède à la vue défectueuse, vous restaurez le formulaire à partir des valeurs persistantes. Error.aspx est une page d'erreur générale, et votre dernier recours.

Cette page ne devrait même pas essayer de faire n'importe quelle tâche au-delà de la gestion d'erreur générale.

0

La façon dont je contourner ce problème est d'utiliser Ajax.BeginForm(){} et Rendu le contrôle de l'utilisateur de sorte que votre vue n'est pas actualisée et votre entrée n'est pas perdue. Si vos messages d'erreur sont strictement les restrictions d'entrée, vous pouvez également utiliser le fichier jquery.validate.js peut être trouvé ici http://randomactsofcoding.blogspot.com/2008/09/starting-with-jquery-validation-plug-in.html

+0

Ce ne sont pas des exceptions de validation en entrée, ce sont des exceptions d'application réelles qui ont été gérées dans mes modèles ou ailleurs (comme une erreur SQL) mais qui ont migré vers la page. –

Questions connexes