Помощник по тегу asp-validation-for не работает для ошибок проверки на стороне сервера
CustomerEntryModel
[Required]
public String FirstName { get; set; }
CustomerController.cs
[HttpGet]
[Route("Get")]
public IActionResult Get()
{
CustomerEntryModel model = new CustomerEntryModel();
return View("CustomerEntry", model);
}
[HttpPost]
[Route("Update")]
public ActionResult Update([FromForm]CustomerEntryModel model)
{
if (!ModelState.IsValid)
{
return View("CustomerEntry", model);
}
return null;
}
CustomerEntry.cshtml
@addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers"
<form asp-controller="Customer" asp-action="Update" method="post">
<input type="text" asp-for="FirstName" />
<span asp-validation-for="FirstName" />
<input type="submit" value="Submit" />
</form>
Я не включаю библиотеки проверки jQuery, поэтому проверка происходит на стороне сервера. Теперь, когда я отправляю страницу с пустым именем, выполняется действие обновления, и я получаю обратно то же представление, но без каких-либо ошибок.
Вместо <span asp-validation-for="FirstName" />
Tag Helper, если я использую HTML помощник @Html.ValidationMessageFor(m => m.FirstName)
Я получаю необходимую ошибку для имени.
Согласно моему пониманию TagHelper
расширяет поведение традиционных HtmlHelper
обеспечить дружественный HTML опыт разработки. Это означает, что то, что работает с HtmlHelper
должен работать с этим TagHelper
коллега.
После ModelState.IsValid
позвони, я МОГУ увидеть Controller.ModelState
(экземпляр ModelStateDictionary
), имеющий ошибку для FirstName
имущество. Тем не менее TagHelper
не может связать это.
Вы можете найти подробности помощников тега проверки MVC6 здесь,
http://www.davepaquette.com/archive/2015/05/14/mvc6-validation-tag-helpers-deep-dive.aspx
1 ответ
Я предлагаю попробовать изменить это:
<span asp-validation-for="FirstName" />
как это:
<span asp-validation-for="FirstName"></span>
может быть, это будет иметь значение