У меня есть 2 сценария, в которых мне нужна помощь с повторной проверкой в моем приложении ASP.NET MVC. Я знаю, что проверка в контроллере не идеальна, поэтому я хочу сохранить это в другом месте - возможно, с моими моделями, где я могу.ASP.NET MVC Validation
1) У меня есть модель с различными свойствами, некоторые из которых имеют валидацию против них с использованием DataAnnotations. Затем я использую методы html helper в моем представлении, чтобы выявить любые ошибки проверки относительно соответствующих полей. По большей части, они работают, как ожидалось. Исключением, с которым я столкнулся, является то, что одно из полей в моем представлении - это раскрывающийся список. Первый элемент в моем списке пуст/пуст, остальные - подлинные значения. Свойство в моей модели, которая связывает это поле имеет следующий против него:
[Required(ErrorMessage = "A value from the list is required")]
В настоящее время, если оставить значение по умолчанию в списке (пробел) и не выбрать подлинное значение из списка, Я хочу, чтобы он отображал сообщение об ошибке проверки, но в настоящее время он обрабатывает его, как если бы он был допустимым значением, и передавал эту проверку.
Как я могу получить его для проверки отказа, если этот пустой/пустой элемент списка отправлен?
2) На одном из моих представлений у меня есть несколько элементов управления загрузкой файлов, что позволяет пользователю загружать изображения на веб-сайт. Эти поля не привязаны напрямую к каким-либо свойствам моей модели - тогда только полученные в результате имя файла (после того, как файл был загружен, преобразован, переименован и т. Д.) Затем присваиваются свойствам «Filename1», «Filename2» и т. Д. В моей модели.
Итак, мне интересно, как лучше всего проверить, что эти обязательные загрузки файлов? В настоящее время я делаю следующее для каждого из элементов управления загрузкой файлов, в моем контроллере (!):
HttpPostedFileBase file = null;
file = Request.Files["Filename1"];
if (file != null && file.ContentLength == 0)
ModelState.AddModelError("Filename1", "Image1 is required");
После того, как это делается для каждого из элементов управления загрузкой файлов, я проверяю, если ModelState действительно:
if (ModelState.IsValid)
Я уверен, что должен быть лучший способ выполнения этой проверки, и я предположил бы, что это не идеально, чтобы иметь это в контроллере, но я не уверен, что лучший способ справиться с этим.
Буду признателен за любую помощь в этих двух сценариях.