Как проверить валидацию каждого объекта в отдельности? - PullRequest
0 голосов
/ 09 ноября 2018

Это мой класс Obj и Action. Но ModelState.isValid проверяет весь массив obj, но мне нужен отдельный объект в каждом цикле, чтобы проверить, прошел ли он проверку.

public class Obj
    {
        [HiddenInput(DisplayValue = false)]
        public string Id { get; set; }

        [Required(ErrorMessage = "The field is required")]
        public string Name { get; set; }

        [Required(ErrorMessage = "The field is required.")]
        [Range(1000, 2019, ErrorMessage = "Year of publication must be between 1000 and 2017.")]
        [Display(Name = "Year of publication")]
        public int Year { get; set; }

        [DataType(DataType.MultilineText)]
        public string Desc { get; set; }

    }


public ActionResult Create(Obj[] obj)
{
    foreach (var b in obj)
    {
        if (ModalState.isValid)
        {
            //...
        }
    }
    return View();
}

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Для проверки вручную с аннотациями данных вы можете создать свой собственный ValidationContext для рассматриваемого объекта, а затем запустить TryValidateObject для каждого из объектов.

var validationResults = new List<ValidationResult>();
foreach (var b in obj)
{

    var context = new ValidationContext(b);
    var isValid = Validator.TryValidateObject(b,context,validationResults);
    'do whatever.....
}
0 голосов
/ 09 ноября 2018

Попробуйте использовать эти методы: TryValidateModel или ValidateModel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...