我有一种操作方法,该方法接受以下模型 - 语言ViewModel:

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

我也有一个自定义模型粘合剂,将邮政数据绑定到 IEnumerable<LanguageItem>.

问题是如何获得数据通量验证?

有帮助吗?

解决方案

我知道很晚的答案,这是针对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);
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top