46 votes

Validation de KO

J'ai asp.net mvc3 projet où je fais une édition en bloc sur une table avec une liaison knock-out. Je souhaite effectuer des validations telles que les validations requises et les validations numériques tout en sauvegardant les données. Y at-il un moyen plus facile de faire des validations inactives. PS: je n'utilise pas de formulaires.

83voto

Cohen Points 1649

Jetez un oeil à:

https://github.com/ericmbarnard/Knockout-Validation

Ce proprement les configurations et les utilise à ce qui est décrit dans le knock-out de la documentation sur: http://knockoutjs.com/documentation/extenders.html en vertu de l': en Direct de l'Exemple 1: Forçage de l'entrée pour être numérique

Vous pouvez voir en direct au: http://jsfiddle.net/KHFn8/3238/

Mise à JOUR: le violon a été mis à jour pour utiliser les dernières KO 2.0.3 et ko.validation de la version 1.0.2 à l'aide de la cloudfare CDN url

Pour l'installation de ko.validation:

ko.validation.rules.pattern.message = 'Invalid.';

ko.validation.configure({
    registerExtenders: true,
    messagesOnModified: true,
    insertMessages: true,
    parseInputAttributes: true,
    messageTemplate: null
});

Pour configurer les règles de validation, l'utilisation des extensions. Par exemple:

var viewModel = {
    firstName: ko.observable().extend({ minLength: 2, maxLength: 10 }),
    lastName: ko.observable().extend({ required: true }),
    emailAddress: ko.observable().extend({  // custom message
        required: { message: 'Please supply your email address.' }
    })
};

-23voto

user2626270 Points 82

Knockout.js la validation est très pratique mais il n'est pas robuste. Vous devez toujours créer la validation côté serveur réplica. Dans votre cas (que vous utilisez knockout.js) vous envoyez des données JSON au serveur et à l'arrière de manière asynchrone, de sorte que vous pouvez faire l'utilisateur pense qu'il voit la validation côté client, mais en fait, il serait asynchrone côté serveur de validation.

Jetez un oeil à l'exemple ici upida.cloudapp.net:8080/org.upida.exemple.knock-out/de commande/de créer?clientId=1 C'est une "Créer une Commande" lien. Essayez de cliquez sur "enregistrer", et de jouer avec les produits. Cet exemple est réalisé à l'aide de upida de la bibliothèque (il y a spring mvc version et asp.net mvc de cette bibliothèque) à partir de codeplex.

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