Il y a une abondance de très bon poste et des explications comment mettre en œuvre la validation avec ASP.NET MVC, et je préfère l'un de ces:
Cependant, j'aime vraiment appeler ActionMethods via la méthode jquery $ .ajax. L'une des raisons pour lesquelles je veux utiliser $ .ajax est qu'il y aura beaucoup de vues partielles chargées dynamiquement dans la page (même le formulaire de création d'entité) via les appels $ .ajax et je ne peux pas simplement retourner la vue - Je vais perdre tout le contenu chargé dynamiquement. Pour vous donner une meilleure vue sur le problème, je vais poster un code simple pour expliquer comment je voudrais appeler les actions des contrôleurs et gérer les réponses dans le client, le code de jQuery.
Les contrôleurs ActionMethod:
public ActionResult CreateCustomer(string name, string accountNumber)
{
try
{
CustomerService.InsertCustomer(name, accountNumber);
return Json(new ActionInfo()
{
Success = true,
Message = "Customer Is Successfully Created"
});
}
catch (Exception ex)
{
return Json(new ActionInfo()
{
Success = false,
Message = ex.Message
});
}
}
appel et la manipulation dans le code client:
$.ajax({
type: "POST",
url: $form.attr('action'),// /MyController/CreateCustomer
data: $form.serialize(),
error: HandleUnespectedError,
dataType: "json",
success: function(response) {
if (response.Success)
alert("Success: " + response.Message);
else
alert("Error: " + response.Message);
}});
est-il un bon moyen de faire certains de ces cadres de validation pour travailler la façon dont je besoin? Je sais que je peux ajouter des erreurs de validation dans ActionInfo, puis le gérer dans le client, mais ce serait déjà la construction de ma seule validation, je crois.
Salut thedude! Merci beaucoup pour l'effort :) Je suis entièrement d'accord avec vous pour l'entité Client pour la liaison (voulait faire comme ça, je ne sais pas pourquoi avais-je mis la méthode avec des paramètres simples) et pour la gestion des exceptions à coup sûr. Avec xVal, je peux facilement implémenter la validation du client, et si quelqu'un l'évite, je l'attraperai en action. Mais comment pourrais-je présenter des messages de validation à côté des champs dans ce cas? –
Pour cela, vous souhaitez renvoyer une vue partielle plutôt que JSON à partir de votre action de contrôleur. Dans votre vue partielle, vous utiliseriez la méthode d'assistance Html.ValidationMessage() pour afficher un message d'erreur pour chaque champ. Les messages d'erreur de niveau champ générés par vos attributs Data Annotations sont disponibles pour votre contrôleur via la propriété ModelState. Par exemple, pour obtenir le premier message d'erreur pour un champ appelé name, vous l'obtiendrez via ModelState ["Name"]. Errors [0] .ErrorMessage'. Jetez également un coup d'œil à la méthode 'Ajax.BeginForm'. Je l'ai utilisé avec beaucoup de succès dans le passé. –
C'est ce que j'ai réalisé, soit je vais retourner JSON vue partielle, et c'est ce que je n'aime pas ... Cependant, je vais jeter un coup d'oeil comment faire avec MS construit dans les fonctionnalités Ajax, bien que mon souhait était d'éviter cela :) Merci –