You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DateTime字段必填错误消息未显示的解决求助

解决DateOfBirth必填错误消息不显示的问题

问题核心在于输入框未与模型字段正确关联,导致ASP.NET验证系统无法识别该字段的验证状态,具体修复步骤如下:

1. 修正输入框的模型绑定属性

你的input标签手动设置了name="x",与模型的DateOfBirth字段名称不匹配,同时缺少asp-for属性完成模型绑定。修改input标签,移除手动定义的name和原生required属性,添加asp-for="DateOfBirth",保留原有格式化脚本:

<div class="form-group row">
    <div class="col-sm-4">
        <label asp-for="DateOfBirth" class="control-label required" style="font-weight:bold;"></label>
        <input asp-for="DateOfBirth" class="form-control input-lg" size="10" maxlength="10" 
               onkeydown="this.value=this.value.replace(/^(\d\d)(\d)$/g,'$1/$2').replace(/^(\d\d\/\d\d)(\d+)$/g,'$1/$2').replace(/[^\d\/]/g,'')" />
        <span asp-validation-for="DateOfBirth" class="text-danger"></span>
    </div>
</div>

关键说明:

  • asp-for="DateOfBirth"会自动生成与模型字段匹配的name、id属性,让模型绑定和验证系统能正确关联输入框;
  • 移除原生required属性,因为模型上的[Required]特性会通过TagHelper自动生成客户端验证规则,避免重复配置;
  • 保留原有格式化脚本,确保输入时自动按MM/DD/YYYY格式添加分隔符。

2. 确保客户端验证脚本加载

若客户端验证未生效,需确保页面中引用了ASP.NET非侵入式验证的必要脚本(通常在_Layout.cshtml中已默认包含):

<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>

3. 服务器端验证兜底

即使客户端验证失效,服务器端验证仍需生效。在表单提交的Action方法中,检查ModelState.IsValid,验证失败时返回原页面:

[HttpPost]
public IActionResult SubmitEmployeeInfo(EmployeeInfo model)
{
    if (!ModelState.IsValid)
    {
        return View(model);
    }
    // 后续业务逻辑处理
    return RedirectToAction("InfoSubmitted");
}

完成以上修改后,DateOfBirth字段的必填错误消息会正常显示在对应的asp-validation-for标签中。

内容的提问来源于stack exchange,提问作者rimi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 11:32:38