Muk*_*ani 4 asp.net-core-mvc tag-helpers asp.net-core
CustomerEntryModel
[Required]
public String FirstName { get; set; }
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
我没有包含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
Joe*_*tte 16
我建议尝试改变这个:
<span asp-validation-for="FirstName" />
Run Code Online (Sandbox Code Playgroud)
像这样:
<span asp-validation-for="FirstName"></span>
Run Code Online (Sandbox Code Playgroud)
也许它会有所作为
| 归档时间: |
|
| 查看次数: |
5553 次 |
| 最近记录: |