2010-05-31 13 views
2

I ont une méthode d'action qui accepte le modèle suivant - LanguagesViewModel:DataAnnotations validation et de liant modèle personnalisé

public class LanguagesViewModel : ViewModelBase 
{ 
IEnumerable<LanguageItem> Languages { get; set; } 
} 

public class LanguageItem 
{ 
[Required] 
public int LanguageId { get; set; } 

[Required] 
public int SpeakingSkillId { get; set; } 

[Required] 
public int WritingSkillId { get; set; } 

[Required] 
public int UnderstandingSkillId { get; set; } 
} 

I ont également un liant à base de modèle personnalisé pour lier les données de courrier à l'IEnumerable<LanguageItem>.

La question est de savoir comment faire fonctionner la validation de DataAnnotations?

+0

Pouvez-vous poster le code de votre classeur personnalisé? –

+0

J'ai trouvé ce [tutoriel] (http://www.asp.net/mvc/tutorials/mvc-music-store-part-6) qui je crois serait très utile pour votre problème. – Mysteric

Répondre

5

Réponse très tardive, je sais, et c'est pour MVC3. Ajoutez ce qui suit à la fin de votre reliure modèle Méthode BindModel

if (model != null) 
{ 
    System.Web.Mvc.ModelMetadata modelMetadata = ModelMetadataProviders.Current.GetMetadataForType(() => model, model.GetType()); 
    ModelValidator compositeValidator = ModelValidator.GetModelValidator(modelMetadata, controllerContext); 
    foreach (ModelValidationResult result in compositeValidator.Validate(null)) 
    {          
     bindingContext.ModelState.AddModelError(result.MemberName, result.Message); 
    } 
}