2010-05-31 54 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); 
    } 
}