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

如何在MVC Core 2中为Razor的@Html.EditorFor字段设置必填项?

在ASP.NET Core MVC 2中设置必填字段的方法

嘿,在ASP.NET Core MVC 2里把UserName这类字段设为必填项其实很简单,建议后端数据注解+前端验证结合使用,既保证后端安全校验,又能给用户实时反馈,我给你详细说说:

1. 后端:通过模型数据注解标记必填

首先在你的模型类里,给UserName属性添加[Required]注解,这是最核心的一步——后端会自动基于这个注解做校验,就算用户绕过前端验证,后端也能拦住非法请求。

你可以这样写模型:

public class UserModel
{
    // 自定义错误提示让用户更清楚要填什么
    [Required(ErrorMessage = "请输入用户名")]
    public string UserName { get; set; }

    // 其他字段...
}

2. 前端:让@Html.EditorFor自动生成验证逻辑

@Html.EditorFor会自动识别模型上的[Required]注解,生成带有验证属性的HTML输入框。不过要确保你的页面已经引入了不显眼验证的必备脚本,通常在_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>

另外,要确保你的表单是用Html.BeginForm或者带asp-action属性的<form>标签创建的,这样不显眼验证才能正常触发。

如果需要手动指定前端验证属性(不推荐,不如数据注解统一维护),也可以这样写:

@Html.EditorFor(model => model.UserName, 
    new { htmlAttributes = new { 
        @class = "form-control", 
        required = "required",
        data_val = "true",
        data_val_required = "用户名不能为空" 
    } })

3. 提交时检查验证状态

在你的Controller的Post方法里,一定要检查ModelState.IsValid,确保只有验证通过的请求才会被处理:

[HttpPost]
public IActionResult Register(UserModel model)
{
    if (!ModelState.IsValid)
    {
        // 验证失败,返回表单页面并显示错误提示
        return View(model);
    }

    // 验证通过,处理注册逻辑
    // ...

    return RedirectToAction("Index");
}

这样一套操作下来,UserName字段就会被强制要求填写啦,前后端双重保障,既友好又安全~

内容的提问来源于stack exchange,提问作者Big'un

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:18:52