ASP.NET MVC, Ajax gestion des Erreurs
Comment gérer les exceptions levées dans un contrôleur lorsque l'ajax de jquery, qui appelle une action?
Par exemple, je voudrais un mondial de code javascript est exécuté sur n'importe quel type de serveur d'exception lors d'un appel ajax qui affiche le message d'exception si en mode debug ou tout simplement un message d'erreur normal.
Sur le côté client, je vais appeler une fonction sur l'ajax d'erreur.
Sur le côté serveur, Dois-je écrire une coutume actionfilter?
- Voir beckelmans post pour un bon exemple. Darins réponse à ce post, c'est bon, mais ne définissez pas le bon code d'état d'erreur.
- Malheureusement, ce lien est rompu
- Voici le lien sur wayback machine: web.archive.org/web/20111011105139/http://beckelman.net/post/...
Vous devez vous connecter pour publier un commentaire.
Si le serveur envoie un code de statut différent de 200, l'erreur de rappel est exécutée:
et pour vous inscrire mondiale gestionnaire d'erreur vous pouvez utiliser la
$.ajaxSetup()
méthode:Une autre façon est d'utiliser JSON. Donc, vous pourriez écrire une action personnalisée filtre sur le serveur, qui attrape les exceptions et les transforme en réponse JSON:
et de le décorer votre contrôleur de l'action avec cet attribut:
et enfin l'invoquer:
error
rappel sera exécuté.Après googler j'écris une simple Exception de la remise basé sur MVC Action de Filtre:
et écrire mondiale.ascx:
puis d'écrire ce script sur la mise en page ou une page Maître:
Enfin, vous devez tourner sur d'erreur personnalisé.
et ensuite en profiter 🙂
Malheureusement, ni de réponses sont bonnes pour moi. Étonnamment, la solution est beaucoup plus simple. De retour de contrôleur:
Et traiter en tant que standard d'erreur HTTP sur le client que vous le souhaitez.
int
. Aussi, quand je fais cela, le résultat est transmis à laajax
success
gestionnaire, et non pas leerror
gestionnaire. Est-ce le comportement attendu?J'ai fait une rapide solution car j'étais à court de temps et il a fonctionné. Même si je pense que la meilleure option est d'utiliser un Filtre d'Exception, peut-être que ma solution peut aider dans les cas qu'une solution simple est nécessaire.
Je n'ai la suite. Dans la méthode de contrôleur j'ai renvoyé un JsonResult avec une propriété "Succès" à l'intérieur de la Données:
Plus tard dans l'appel ajax j'ai simplement demandé à cette propriété pour savoir si j'avais une exception:
Espère que cette aide. Heureux de code! 😛
En accord avec aleho réponse voici un exemple complet. Il fonctionne comme un charme et est super simple.
Contrôleur de code
Code Javascript dans la vue
Espère que cela aide quelqu'un d'autre!
Pour les erreurs de manipulation à partir d'appels ajax côté client, vous pouvez affecter une fonction à la
error
option de l'appel ajax.Pour définir une valeur par défaut à l'échelle mondiale, vous pouvez utiliser la fonction décrite ici:
http://api.jquery.com/jQuery.ajaxSetup.