MVC .NET CORE - Обязательное DataAnnotation (ErrorMessage = "Err") не отображается при проверке на стороне сервера - PullRequest
0 голосов
/ 13 ноября 2018

Я создал веб-приложение, используя .Net MVC Core, с подходом Code First, и сгенерировал Views / Controllers с помощью скаффолдинга.

Для проверки я использую Fluent API и аннотации данных, и все, кажется, работает просто отлично. Однако пользовательские сообщения об ошибках в DataAnnotation отображаются только при проверке на стороне клиента, и когда я блокирую JS своего браузера для проверки проверки на стороне сервера, вместо этого я получаю следующее сообщение об ошибке: " Значение '' недопустимо ."

Я пытался использовать [DataType (DataType.DateTime, ErrorMessage = "Неверная дата!")], Но это не сработало!

Моя модель:

    public class MyModel
{
    [Required(ErrorMessage = "Required field!")]
    [Display(Name = "Departure Date")]
    public DateTime DateDeparture { get; set; }

    [Required(ErrorMessage = "Required field!")]
    [Display(Name = "Arrival Date")]
    public DateTime DateArrival { get; set; }
 }

My View:

    public IActionResult Create()
    {
        return View();

    }

Мой контроллер:

    @model App.Models.MyModel

@{
    ViewData["Title"] = "Create";
}

    <form asp-action="Create">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="DateDeparture" class="control-label"></label>
                <input asp-for="DateDeparture" class="form-control" />
                <span asp-validation-for="DateDeparture" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="DateArrival" class="control-label"></label>
                <input asp-for="DateArrival" class="form-control" />
                <span asp-validation-for="DateArrival" class="text-danger"></span>
            </div>
            <div class="form-group">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </form>

Проверка на стороне клиента

Client-Side Validation

Проверка на стороне сервера

Server-Side Validation

В соответствии с предлагаемым здесь решением для аналогичного сценария ( Thread ) я должен сделать мое поле обнуляемым! Что не кажется правильным решением для всех случаев! И у меня уже есть другая форма со строкой, отличной от Nullable, которая генерирует одно и то же настраиваемое сообщение об ошибке для проверок как на стороне клиента, так и на стороне сервера, поэтому я считаю, что проблема больше связана со скалярными значениями, а не с параметрами типа Non / Nullable, но я не могу понять причину, чтобы иметь возможность переопределить это сообщение проверки на стороне сервера!

Буду признателен за любую помощь ...

...