如何在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
相关产品推荐
相关产品推荐

