Я создал веб-приложение, используя .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>
Проверка на стороне клиента
Проверка на стороне сервера
В соответствии с предлагаемым здесь решением для аналогичного сценария ( Thread ) я должен сделать мое поле обнуляемым!
Что не кажется правильным решением для всех случаев! И у меня уже есть другая форма со строкой, отличной от Nullable, которая генерирует одно и то же настраиваемое сообщение об ошибке для проверок как на стороне клиента, так и на стороне сервера, поэтому я считаю, что проблема больше связана со скалярными значениями, а не с параметрами типа Non / Nullable, но я не могу понять причину, чтобы иметь возможность переопределить это сообщение проверки на стороне сервера!
Буду признателен за любую помощь ...