Примечание: Это очень упрощенный код для демонстрации проблемы.В моем реальном коде гораздо больше элементов управления, проверка на стороне клиента и т. Д.
У меня есть следующее <form>
(очень упрощенное) представление с именем Jim.cshtml
...
<form method="post" asp-controller="Home" asp-action="Jim">
<div asp-validation-summary="All" class="text-danger"></div>
<label for="Email">Email</label>
<input type="text" id="Email" name="Email">
<div>
<button type="submit">Submit</button>
</div>
</form>
И соответствующий код контроллера ...
public IActionResult Jim() =>
View();
[HttpPost]
public IActionResult Jim(Jim j) {
// Silly server-side validation for testing
if (!j.Email.StartsWith("x")) {
ModelState.AddModelError("Email","Must start with an 'x'");
}
if (!ModelState.IsValid) {
return View(j);
}
return RedirectToAction(nameof(Index));
}
Модель представления Jim
выглядит следующим образом ...
public class Jim {
[Required(ErrorMessage = "Required")]
public string Email { get; set; } = "";
}
Если я загружаю страницу, введите адрес электронной почты, который неНе начинайте с "j" и не нажимайте кнопку отправки, тогда ModelState
недействителен, поэтому контроллер возвращает представление Jim
с моделью.Сводка проверки показывает сообщение об ошибке, но текстовое поле пустое.
Я ожидал, что текстовое поле будет заполнено введенным мною адресом электронной почты.
Что я делаю не так?
Спасибо