2010-03-02 4 views
2

J'ai un objet nommé Utilisateur, avec une propriété Nom, avec un Obligatoire attribut.La validation côté client ne fonctionne pas avec des sous-propriétés dans ASP.NET MVC 2?

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

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

J'ai créé une zone de texte, comme suit:

<%= Html.TextBoxFor(model => model.Name) %> 

Lorsque vous activez la validation clientside, Nom est parfaitement validé côté client.

Cependant, si je crée un ViewModel où l'utilisateur est maintenant une propriété

public class UserModel 
{ 
    public User TheUser { get; set; } 
    public string SomeOtherProperty { get; set; } 
} 

et crée mon textbox

<%= Html.TextBoxFor(model => model.TheUser.Name) %> 

puis validation échoue clientside. Le formulaire est publié sans validation par le client, détectant l'erreur.

Il semble que le javascript window.mvcClientValidationMetadata se remplit comme avant, sans différence notable.

Ce qui donne? Est-ce qu'il y a quelque chose que je dois faire?

J'utilise

  • ASP.NET MVC 2 RC2 (avec .NET 3.5/VS2008)
  • MicrosoftMvcJQueryValidation.js des dernières Futures télécharger

Edit:

En y regardant de plus près window.mvcClientValidationMetadata n'est pas rempli comme il se doit. Aucun ValidationRules sont spécifiés:

{"FieldName":"TheUser.Name","ReplaceValidationMessageContents":true,"ValidationMessageId":"TheUser_Name_validationMessage","ValidationRules":[]} 
+0

Pouvez-vous afficher votre définition de classe d'utilisateur? – Levi

+0

J'ai ajouté la classe maintenant ... – MediaMonkey

+0

des mises à jour sur ce problème? l'avez-vous résolu? – Laith

Répondre

0

Vous devez créer un modèle d'éditeur pour votre classe utilisateur. Chargez-le avec Html.EditorFor (model => model.User, "User"), avec "User" étant le nom de votre modèle d'éditeur.

La classe d'utilisateur doit être le modèle de vue pour ce modèle d'éditeur. Puis, dans votre modèle d'éditeur pour l'utilisateur, appelez les modèles d'éditeur pour ses propriétés.

La validation du client prête à l'emploi MVC devrait fonctionner correctement avec ceci.

Questions connexes