【问题标题】:DataAnnotations validation and custom model binderDataAnnotations 验证和自定义模型绑定器
【发布时间】:2012-09-30 06:06:17
【问题描述】:

我有一个接受以下模型的操作方法 - LanguagesViewModel:

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&lt;LanguageItem&gt;

问题是如何让 DataAnnotations 验证工作?

【问题讨论】:

  • 你能发布你的自定义活页夹的代码吗?
  • 我发现了这个tutorial,我相信它对您的问题非常有用。

标签: asp.net-mvc-2 data-annotations custom-model-binder


【解决方案1】:

我知道的答案很晚,它适用于 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);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    相关资源
    最近更新 更多