Проверка DataAnnotations и привязка пользовательской модели

У меня есть метод действия, который принимает следующую модель - 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<LanguageItem>.

Вопрос в том, как заставить работать валидацию DataAnnotations?


person Ant    schedule 31.05.2010    source источник
comment
Можете ли вы опубликовать код своего настраиваемого подшивки?   -  person Shay Friedman    schedule 01.06.2010
comment
Я нашел это руководство, которое, на мой взгляд, было бы очень полезно для вашей проблемы.   -  person Mysteric    schedule 11.12.2010


Ответы (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);
    }
}
person Betty    schedule 29.09.2012