gpt4 book ai didi

asp.net-core - asp-validation-for 标签助手不适用于服务器端验证错误

转载 作者:行者123 更新时间:2023-12-02 11:25:25 24 4
gpt4 key购买 nike

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 验证库,因此验证发生在服务器端。现在,当我提交名字为空的页面时,更新操作被执行,我收到了相同的 View ,但没有任何错误。

而不是 <span asp-validation-for="FirstName" />标签助手,如果我使用 html 助手 @Html.ValidationMessageFor(m => m.FirstName)我得到名字所需的错误。

据我了解 TagHelper扩展了传统 HtmlHelper 的行为提供HTML友好的开发体验。这意味着,与 HtmlHelper 一起使用的东西必须使用它的 TagHelper对方。

ModelState.IsValid 之后打电话,我可以看到 Controller.ModelState ( ModelStateDictionary 的实例),有 FirstName 的错误属性(property)。但是, TagHelper无法绑定(bind)它。

你可以在这里找到 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>

也许它会有所作为

关于asp.net-core - asp-validation-for 标签助手不适用于服务器端验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39464226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com