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

ASP.NET Core Razor页面StringLength验证不生效问题排查

问题分析与修复方案

你的代码存在两个关键问题,导致StringLength验证的错误提示无法正常显示:

1. 验证标签的属性名拼写错误

视图里的验证提示span标签中,asp-validation-for写的是Students.tName,但你的Student模型里对应的属性是Name(多了个多余的t前缀)。这个拼写错误让验证框架找不到对应的验证规则,自然不会弹出错误提示。

修复后的span标签代码:

<span asp-validation-for="Students.Name" class="message"></span>

2. 确保完整启用验证流程

除了修正拼写,还要确认你的Razor页面应用已经配置了必要的验证机制:

  • 客户端验证:确保页面引入了jQuery和验证相关脚本(默认模板会自带,要是手动删了就得加回来):
    <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>
    
  • 服务器端验证:在页面的Post处理方法里,要先检查ModelState.IsValid,验证不通过就返回当前页面,触发错误提示:
    public IActionResult OnPost()
    {
        if (!ModelState.IsValid)
        {
            return Page();
        }
        // 后续保存逻辑
        return RedirectToPage("./Index");
    }
    

补充说明

用asp-for生成输入框时,框架会自动加maxlength="20"限制输入长度,但如果用户通过浏览器控制台修改这个属性并提交超长内容,服务器端验证会拦截,这时候修正后的验证标签就会显示你定义的错误信息:"Name length must be between 2 and 20."

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 05:32:17