MVC.Net проверка базовой модели - значение " недопустимо. Ошибка


Я пытаюсь использовать проверку модели в MVC .Net Core и не могу заменить это сообщение об ошибке по умолчанию "значение " недопустимо".

В теории, мы можем заменить наше собственное сообщение об ошибке, используя аннотацию ErrorMessage в модели. Но я не мог найти способ заставить его работать.

Моя Модель

[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>

Введите описание изображения здесь

Не могли бы вы помочь мне, как я мог бы заменить это сообщение об ошибке? Спасибо.

2 8

2 ответа:

Для того, чтобы ваш атрибут Required работал, вам нужно сделать поле nullable:

public DateTime? AppointmentDate { get; set; }

Edit : Также обратите внимание, что атрибут DataType фактически не выполняет проверку на поле. MVC проверяет дату при применении привязки от post данных к model

Моя проблема заключалась в том, что в действии Create я возвращал представление без создания сущности, которая, когда я ее изменил, т. е. Return View(new MyEntity()); исправила проблему