44 votes

Knockout + MVC 3 + Validation

Dans le contrôleur, je voudrais être en mesure d'obtenir pour le client des règles de validation du modèle. J'ai attaché des attributs à l'aide d'annotations de données et que vous souhaitez être en mesure de passer à quelque chose de nouveau au client via l'appel ajax donc je peux ensuite créer le jquery valider automatiquement les options.

Normalement c'est fait pour libre avec la discrète trucs, mais je vais essayer de tirer parti de knock-out de liaison, tout en n'ayant toujours pas à reproduire les règles de validation sur le serveur et le client.

Sans l'aide de la réflexion sur le modèle de serveur de côté, je suis un peu incertain sur la façon d'atteindre cet objectif.

26voto

Dans mon Mvc Contrôles de la Trousse , j'ai développé des Aides basées sur le knock-out de la bibliothèque. Ces aides non seulement de faciliter l'écriture de la ko de code, mais d'améliorer le knock-out de la bibliothèque avec Discrète de la validation et de la mondialisation. En outre, le mécanisme de liaison est étendu pour inclure des commandes complexes comme un DatetimePicker, et d'autres "complexe" (faites par les différentes parties html) des contrôles.

Enfin, knockout modèles peuvent être définis par un Rasoir aides.

Voir la documentation ici, ici, ici et ici. J'ai aussi quelques tutoriels qui expliquent comment mettre en œuvre des fonctionnalités avancées avec mes assistants:

La faible bande Passante des Transferts avec Le Côté Client de Modèles Mvc Contrôles Toolkit

La manipulation de Grandes Quantités de Données Côté Client Modèles

La manipulation de Grandes Quantités de Données Côté Client des Modèles de 2

0voto

nEEbz Points 7030

C'est tout un travail. Vous souhaitez pouvoir convertir votre code C # en Javascript avec les conversions de types de données respectives, etc. Vous ferez mieux d'écrire deux ensembles de validation distincts côté serveur et côté client. Il serait beaucoup plus facile de gérer cela que d'écrire votre propre structure de conversion par vous-même et de la maintenir.

0voto

Jernej Novak Points 792

Sur le modèle, utilisez la validation des attributs que vous aimez:

  public class ModelWithValidation
 {
    public int Id { get; set; }

    [Required]
    public string Name { get; set; }
 }
 

Dans les formes mvc

 @using( Html.BeginForm())
{    
     @Html.TextBoxFor(m => m.Name, new {data_bind = "value: name"})
     @Html.ValidationMessageFor(m => m.Name)
}
 

Dans jQuery, testez si le formulaire est valide surSubmit ou dans la fonction de sauvegarde knock-out, appelez le code suivant pour valider la saisie. Vous devez inclure les bibliothèques jQuery.unobtrusive * et jQuery.validate *. N'oubliez pas de valider les entrées côté serveur également!

 var form = $("form");
form.removeData('validator');
form.removeData('unobtrusiveValidation');
$.validator.unobtrusive.parse(form);

$("form").valid() //true false 
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X