在 ASP.NET MVC 中,当使用 DataAnnotations 为模型属性添加验证时,可以通过 ModelState 获取验证失败的错误信息(即 ErrorMessage)。
假设有一个模型类,并且使用了 DataAnnotations 特性,例如:
using System.ComponentModel.DataAnnotations;
public class UserModel
{
[Required(ErrorMessage = "用户名是必填项")]
[StringLength(50, ErrorMessage = "用户名长度不能超过 50 个字符")]
public string Username { get; set; }
[Range(18, 100, ErrorMessage = "年龄必须在 18 到 100 之间")]
public int Age { get; set; }
}
在控制器中,当模型绑定或验证失败时,可以从 ModelState 中提取这些错误信息。
获取 ModelState 中的错误信息
可以使用以下代码获取 ModelState 中所有验证失败的 ErrorMessage:
using Microsoft.AspNetCore.Mvc;
using System.Linq;
public class UserController : Controller
{
[HttpPost]
public IActionResult Submit(UserModel model)
{
if (!ModelState.IsValid)
{
// 获取所有错误消息
var errorMessages = ModelState.Values
.SelectMany(v => v.Errors)
.Select(e => e.ErrorMessage)
.ToList();
// 输出错误消息
foreach (var errorMessage in errorMessages)
{
Console.WriteLine(errorMessage);
}
// 例如返回错误消息到视图
ViewBag.Errors = errorMessages;
return View(model);
}
// 如果验证成功,继续处理
return RedirectToAction("Success");
}
}
代码说明
ModelState.Values:获取 ModelState 中所有字段的状态。
SelectMany(v => v.Errors):对每个字段的错误进行展开,以获取所有错误。
Select(e => e.ErrorMessage):从每个错误中提取 ErrorMessage。
此方法可以在验证失败时收集所有的 ErrorMessage 并进行输出或返回给视图进行展示。
喜欢漂泊 2024-11-28
学习了