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

ASP.NET Core MVC中[Required]特性的服务端验证实现指引

ASP.NET Core MVC 服务端[Required]验证实现方案

问题根源

服务端验证未生效的核心原因是控制器Post方法未主动检查模型验证状态,ASP.NET Core不会自动拦截无效请求,必须手动触发验证并处理结果。

解决步骤

1. 修改控制器Post方法,添加模型验证逻辑

在Create的Post方法中,先判断ModelState.IsValid,验证失败时返回原视图,错误信息会自动绑定到视图的验证标签中:

public class EmployeeController : Controller
{
    List<Employee> emplist = new List<Employee>();

    // 其他方法保持不变

    [HttpPost]
    public IActionResult Create(Employee emp) 
    {
        // 检查模型验证结果
        if (!ModelState.IsValid)
        {
            // 验证失败,返回创建视图,保留用户输入并显示错误
            return View(emp);
        }

        // 验证通过,添加数据到列表
        emplist.Add(emp);
        return RedirectToAction("Index");
    }
}

2. 修正视图语法错误

视图中lastname字段的asp-for和asp-validation-for缺少引号,会导致验证消息绑定失败,修改后:

<div class="form-group row">
    <label class="col-sm-2" asp-for="lastname">Last Name</label>
    <input type="text" class="col-sm-4" asp-for="lastname" />
    <span asp-validation-for="lastname" style="color:red"></span>
</div>

3. 模型验证特性说明(规范优化)

  • Name是非可空string(.NET 6+启用Nullable后),本身已禁止null,[Required(AllowEmptyStrings = false)]进一步限制空字符串,配合[MinLength(2)]确保输入长度合规。
  • lastname是可空string,[Required(AllowEmptyStrings = false)]同时禁止null和空字符串,满足必填要求。

验证效果

提交空值或不符合规则的输入时,控制器会检测到ModelState无效,返回创建视图,页面上的<span asp-validation-for>标签会自动显示对应的错误提示(比如“此字段是必填项”或“字段Name必须至少包含2个字符”)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 21:13:18