Comment puis-je centraliser modelstate de validation asp.net mvc à l'aide de filtres d'actions?
J'écris ce code dans plusieurs endroits et toujours répéter cette logique:
public ActionResult MyMethod(MyModel collection)
{
if (!ModelState.IsValid)
{
return Json(false);//to read it from javascript, it's always equal
}
else
{
try
{
//logic here
return Json(true);//or Json(false);
}
catch
{
return Json(false);//to read it from javascript, it's always equal
}
}
}
Est-il de toute façon à l'aide de filtres d'actions, à ne pas répéter les try-catch
, demander si le modèle est valide et return Json(false)
comme ActionResult
?
Oui, absolument, vous pouvez créer une validation
Je pourrais répondre, mais tout ce que vous avez besoin est déjà tapé ici: lostechies.com/jimmybogard/2013/12/19/... ou vous pouvez regarder une vidéo de l'techniques de viddler.com/v/b568679c
oui, le si doit à l'extérieur de la
ActionFilter
ou un ExceptionFilter
de rattraper toutes les erreurs, mais pourquoi dans le monde, faites-vous un try...catch ici? De lever des exceptions à partir de quelque chose comme la validation est tout simplement faux. Ce genre d'erreurs sont en attendez-vous? Également de retour Json(true)
ou Json(false)
est mal, c'est ce que les codes d'état Http.Je pourrais répondre, mais tout ce que vous avez besoin est déjà tapé ici: lostechies.com/jimmybogard/2013/12/19/... ou vous pouvez regarder une vidéo de l'techniques de viddler.com/v/b568679c
oui, le si doit à l'extérieur de la
try-catch
, outre le fait que retourner une Json (true)
est mal, merciOriginalL'auteur MaicolBen | 2014-02-09
Vous devez vous connecter pour publier un commentaire.
Pour se conformer avec le RESTE, vous devez retourner http bad request 400 pour indiquer que la demande est mal formé (modèle n'est pas valide) au lieu de retourner
Json(false)
.Essayer cet attribut de asp.net site officiel pour les api web:
Une version pour asp.net mvc peut être comme ceci:
OriginalL'auteur Khanh TO
Si vous voulez le faire dans MVC6 ou Mvc de Base et sans en spécifier l'attribut sur l'ensemble de vos méthodes d'Action, alors c'est comment vous le faites.
D'abord créer votre ActionFilter
Maintenant créer une convention dans laquelle vous allez appliquer ce ActionFilter pour tous vos contrôleurs.
Et la dernière chose à faire est d'enregistrer la présente convention en MVC
OriginalL'auteur adeel41
Ici est de savoir comment utiliser le code de Khanh (À partir asp.net site officiel):
Pour appliquer ce filtre à tous les contrôleurs d'API Web, ajoutez une instance du filtre à l'HttpConfiguration.Collection de filtres lors de la configuration:
Une autre option est de définir le filtre comme un attribut sur des contrôleurs individuels ou des actions de contrôleur:
OriginalL'auteur Eric Bole-Feysot