MVC.Net Core Model Validation - значение '' недействительно. ошибка
Я пытаюсь использовать проверку модели в MVC.Net Core и не могу заменить это сообщение об ошибке по умолчанию "Значение" недопустимо.
В теории мы можем заменить собственное собственное сообщение об ошибке, используя ErrorMessage
Annotation в модели. Но я не мог найти способ заставить эту работу работать.
Моя модель
[Required(ErrorMessage = "Date Required")]
[DataType(DataType.Date, ErrorMessage = "Invalid Date Format")]
[Display(Name = "Appointment Date")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime AppointmentDate { get; set; }
Я помещаю разные ErrorMessage
для тегов Required
и DataType
, как показано выше.
Мой просмотр html
<div class="col-md-2">
<input class="form-control" asp-for="AppointmentDate">
<span asp-validation-for="AppointmentDate" class="text-danger"></span>
</div>
![введите описание изображения здесь]()
Не могли бы вы помочь мне, как я могу заменить это сообщение об ошибке? Спасибо.
Ответы
Ответ 1
Чтобы сделать ваш атрибут Required
, вам нужно сделать поле нулевым:
public DateTime? AppointmentDate { get; set; }
Изменить: также обратите внимание, что атрибут DataType
фактически не выполняет проверку в поле. MVC проверяет дату при применении привязки данных post
к model
Ответ 2
Моя проблема заключалась в том, что в Create Action я вернул View без создания объекта Entity, который, когда я его изменил, т.е. Return View(new MyEntity());
, исправил проблему
Ответ 3
Наличие той же проблемы, но не может обнаружить проблему. Я проверил объект в режиме отладки, чтобы увидеть, есть ли способ узнать, какое свойство не соответствует состоянию модели.
![Debug mode view of the modelstate object]()
Тогда я вижу, какая модель не подходит. Это логическое значение, которое отображается на флажок
Странная часть: "это не обязательное поле"!
Я добавил знак вопроса и использовал метод getvalueordefault при его использовании
public bool? IsCorporateAccount { get; set; }