2010-05-31 77 views
2

我有接受以下模型的动作方法 - LanguagesViewModel:DataAnnotations验证和自定义模型粘合剂

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; } 
} 

我也有POST数据绑定到IEnumerable<LanguageItem>的定制模型粘合剂。

问题是我如何获得DataAnnotations验证工作?

+0

您可以发布自定义绑定器的代码吗? – 2010-06-01 03:52:47

+0

我发现这[教程](http://www.asp.net/mvc/tutorials/mvc-music-store-part-6),我相信这对您的问题非常有用。 – Mysteric 2010-12-11 12:24:38

回答

5

很晚回答我知道,这是为MVC3。将以下内容添加到模型绑定器的结尾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); 
    } 
}