ValidationFailure может обнаружить сообщение об ошибке, но не уверен, почему оно не будет отображаться на странице. Есть идеи, почему?
Это потому, что ваше ключевое имя data-valmsg-for
равно NewItem.Name
.
Ваш файл cs html ниже:
<span asp-validation-for="NewItem.Name" class="text-danger"></span>
сгенерирует html в браузере, как показано ниже:
<span data-valmsg-for="NewItem.Name" class="text-danger field-validation-valid" data-valmsg-replace="true"></span>
1.В первом случае вы можете изменить имя ключа, как показано ниже:
ModelState.AddModelError("NewItem.Name", fail.ErrorMessage);
2. Второе Кстати, если вы не хотите добавлять имя ключа вручную, вы можете установить пакет FluentValidation.AspNetCore
и изменить свой код, как показано ниже:
CreateCommandValidator CreateValidator = new CreateCommandValidator();
var createCheck = CreateValidator.Validate(NewItem);
//AddToModelState(ModelStateDictionary modelState, string prefix);
createCheck.AddToModelState(ModelState, "NewItem");
return Page();