2009-03-28 5 views
1

Je crée un site Web dans ASP.NET MVC et j'ai trébuché sur quelque chose que je ne peux vraiment pas comprendre.Comment renvoyer les erreurs de mon contrôleur mvc asp.net lors d'un post jquery ajax?

J'ai une page de profil utilisateur qui permet à un utilisateur de changer son mot de passe. Sur le côté serveur, je veux valider que l'utilisateur a entré un mot de passe "courant" correct avant d'autoriser la modification.

Quelle est la meilleure façon de revenir à ma vue lorsque le mot de passe est incorrect? J'ai essayé using ModelState.AddModelError et puis renvoyé Json (View()) mais je ne peux pas voir le message d'erreur n'importe où dans l'objet JSON retourné au navigateur.

Quelle est la meilleure façon de faire cela en utilisant jquery sur le client?

/Jesper

Répondre

1

ModelState ne fait pas automatiquement quoi que ce soit avec le retour Json. Vous devez remplir manuellement un objet de modèle avec les données que vous souhaitez renvoyer au client.

Alternativement, si vous voulez signaler erreurs au client, vous pouvez lancer une exception dans la méthode d'action du contrôleur et le gérer dans jQuery.

2

Je voudrais créer des classes

JsonOK : JsonResult { ... } 
JsonError : JsonResult { ... } 

et d'utiliser ces 2 pour les réponses OK et erreur.

try 
{ 
    ... 
} 
catch (Exception ex) 
{ 
    return JsonError(ex.Message); 
    // or output your own message 
    // or pass into it ModelState with your errors 
} 
Questions connexes