asp-validation-for 标记助手不适用于服务器端验证错误
asp-validation-for tag helper is not working for server side validation errors
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
我建议尝试更改此设置:
<span asp-validation-for="FirstName" />
像这样:
<span asp-validation-for="FirstName"></span>
也许会有所作为
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
我建议尝试更改此设置:
<span asp-validation-for="FirstName" />
像这样:
<span asp-validation-for="FirstName"></span>
也许会有所作为