Question

J'ai construit une page en utilisant ASP.NET MVC 2 en utilisant KnockoutJS, KnockoutJS plug-in Mapping ,, et jQuery 1.7.1. Je voudrais pouvoir également utiliser le plugin de validation KnockoutJS ( ). Cependant je dois avoir deux passe du serveur et de validation côté client.

Est-il possible d'avoir mon point de vue des modèles carte à la KnockoutJS plug-in Validation qui utilise le. procédé étendre ()?

EDIT: Exemple. Activer automatiquement ceci:

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

Dans ceci:

var viewmodel = {
    firstname: ko.observable().extend({ required: true });
}
Était-ce utile?

La solution

Dans le Mvc Controls Toolkit je mis en place un moteur qui permet la validation habituelle Mvc (annotations de données ou autre) côté client knockout.js.Both et validation côté serveur peuvent être activés. De plus, knock-out peut être utilisé avec des aides Mvc, certaines liaisons sont automatiquement insérées, etc.

Autres conseils

Si vous utilisez knockoutjs et jquery, je suis venu avec ce qui suit méthode très simple pour faire la validation côté client de base.

Où que vous voulez afficher le message d'erreur sur votre page, inclure une balise span comme ceci:

<span name="validationError" style="color:Red" 
data-bind="visible: yourValidationFunction(FieldNameToValidate())">
* Required.
</span>

Il est évident que vous devez écrire « yourValidationFunction » à faire tout ce que vous voulez qu'il fasse. Il a juste besoin de retourner vrai ou faux, vrai moyen afficher l'erreur.

Vous pouvez utiliser jquery pour empêcher un utilisateur de procédure en cas d'erreur de validations sont affichées. Vous avez probablement déjà un bouton Enregistrer qui déclenche une fonction javascript pour faire un peu ajax ou autre chose, donc il suffit d'inclure ce au sommet de celui-ci:

 if ($("[name='validationError']:visible").length > 0) {
        alert('Please correct all errors before continuing.');
        return;
    }

Il est beaucoup plus simple et plus flexible que beaucoup d'autres solutions de validation là-bas. Vous pouvez placer votre message d'erreur chaque fois que vous voulez, et vous n'avez pas besoin d'apprendre à utiliser une bibliothèque de validation, et cette méthode fonctionne indépendamment de la technologie côté serveur.

Je vous recommande d'utiliser la construction dans la validation MVC clientside, vous pourriez avoir besoin de l'invoquer, essayez ceci:

$.validator.unobtrusive.parse(yourFormElement)

code à partir de: https://stackoverflow.com/a/5669575/941536

Je ne sais pas si MVC2 a discret validation de clientside si, ne sachant pas si une mise à jour MVC3 serait une option pour vous si nécessaire.

Les travaux du plugin validation de la manière que vous étendez les que vous souhaitez observables valider.

Peu importe si elles sont créées à partir mappings, il suffit de créer une fonction que vous exécutez après la mappning a été fait et ajouter toute la validation que vous voulez.

Ou, si vous voulez, vous pouvez utiliser les liaisons de validation. Lisez le fichier Lisez-moi sur Github pour la validation de knock-out et vous voyez comment ils le font.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top