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" />
, если я использую помощник 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.