Датанотации Валидации и пользовательской модели Binder
-
05-10-2019 - |
Вопрос
У меня есть метод действий, который принимает следующую модель - Языки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>
.
Вопрос в том, как я могу получить проверку данныхAnnotations для работы?
Решение
Очень поздний ответ Я знаю, и это для MVC3. Добавьте следующее в конец вашей модели Binder 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);
}
}
Не связан с StackOverflow