2010-03-26 5 views
1

Voici la situation:ASP.NET MVC: Est-il "incorrect" d'utiliser HTTP 500 via une requête AJAX pour renvoyer un contenu de formulaire non valide?

J'ai deux vues partielles. On a une forme.

Ce qui doit arriver est lorsque le formulaire est affiché via une requête AJAX, si l'opération réussit, la zone avec la deuxième partie est repeuplée avec le contenu. Toutefois, si les données publiées n'étaient pas valides, le partiel d'origine est repeuplé avec un message d'erreur.

J'utilise jQuery et le plugin ajaxForm pour gérer les messages et les réponses du formulaire. Serait-ce "mauvais"/mauvais codage/wtf-digne d'utiliser conditionnellement $ .html() pour remplacer le contenu dans une zone quand il s'agit d'un 200, et une zone différente s'il s'agit d'un 500?

Pour moi, cette idée sent, mais je ne sais pas comment faire autrement l'objectif.

Répondre

3

On dirait que vous devriez utiliser 400 (Bad Request), et non 500 (Internal Server Error), car l'erreur est du côté client.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

+0

Un point valide! Ne change pas la odeur cependant. –

+0

Il semble que votre objection est d'utiliser un code d'erreur lorsque l'application n'a pas planté - est-ce exact? Si oui, pensez aux autres codes 4XX - 404 Not Found, 401 Auth Required etc. La seule raison pour laquelle je pourrais éviter d'utiliser un code d'erreur dans cette situation est si cela provoque un comportement étrange de la part d'un agent utilisateur. Mais je ne pense pas que cela devrait être un problème dans ce cas. –

0

Oui, je pense pas que ce soit une bonne idée. Je ne pense pas que vous devriez utiliser 400 ou 500, mais toujours 20x.

Dans ce cas, vous pourriez jouer avec les types contenu, et que vos messages d'erreur renvoyés sous forme de chaînes JSON au lieu de HTML. J'ai déjà utilisé ce genre d'idée, bien que j'aie utilisé prototypejs au lieu de jQuery et ça a bien marché.