2009-12-02 8 views
1

Au cours des dernières 24 heures, je suis devenu énormément épris de xVal. Je l'ai présenté dans mon site Web personnel, et cela fonctionne comme un champion - je ne peux pas croire à quel point c'était facile de le faire fonctionner. J'utilise ASP.Net MVC, xVal 1.0 et les validateurs DataAnnotations.Préfixe côté client xVal causant des problèmes ModelBinder

Maintenant, en essayant de mettre ce même code dans une application de travail, je vois un comportement différent. Je suis assez logique pour savoir que j'ai probablement quelque chose de différent, mais je ne vois pas ce que c'est.

Pour rendre le travail de validation côté client, je l'ai "message" ajouté des préfixes à mes champs, comme ceci:

<%= Html.TextBox("message.Subject", Model.Subject, new { @class = "contact-input required" })%> 

Et ainsi de suite. Mon contrôleur a alors cette logique:

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Index(Message message) 
    { 
     try 
     { // some code here 

Maintenant, automagiquement, le ModelBinder remplit mon objet. C'est bien.

Le problème est que mon projet de travail, j'essaie de faire la même chose - la validation côté client fonctionne très bien, mais le ModelBinder ne remplit pas mon modèle. Je sais que c'est un problème de préfixation, car quand je supprime le préfixe, ça va. La seule différence dans les scripts est que le projet de travail utilise la bibliothèque de validation jquery minifiée.

Des idées sur ce qu'il faut rechercher?

Répondre

0

Vous n'avez besoin d'aucun préfixe pour faire fonctionner le xVal, mais vous avez besoin des mêmes noms pour vos entrées afin que votre ModelBinder fonctionne correctement. Il suffit donc d'ajouter les DataAnnotations aux propriétés des classes que vous allez lier à la vue et d'appeler l'assistant xVal html "ClientSideValidation", vous devez également ajouter la référence à xval, scripts: jquery, jquery.validate, xval. valider ...

+0

Je suis avec vous là-dessus - mais pour qu'un résumé de validation fonctionne, c'est comme ça, n'est-ce pas? Selon l'exemple de l'application - que je suivais, étant nouveau pour elle. – reallyJim

+1

Ok, je suis revenu à travers, et tout nettoyé. Travailler maintenant sans les préfixes. Aller devoir revenir en arrière et voir ce que le point d'entre eux était de toute façon. Merci pour la contribution! – reallyJim

+0

pour la validation, il vous suffit d'ajouter une autre méthode "courante" à votre assistant "clientsidevalidation" quelque chose comme .UseValidationSummary, n'oubliez pas de placer un HTML.ValidationSummary quelque part dans votre vue – Omu

0

[AcceptVerbs(HttpVerbs.Post)] public ActionResult Index([Bind(Prefix = "Message")]Message message)

il n'y a pas bussiness avec xval, c'est quelque chose ModelBinder asp.net mvc

espoir que cela est utile

mon anglais est la piscine (!: