ASP.NET ModelState
最后修改于 2025 年 4 月 3 日
在本文中,我们将探讨 ASP.NET 8 中的 ModelState。ModelState是处理 Web 应用程序中的模型验证和错误报告的关键组件。
ASP.NET 是一个跨平台、高性能的框架,用于构建现代 Web 应用程序。ModelState 提供了一种跟踪模型数据验证状态的方法。
基本定义
ASP.NET 中的 ModelState 代表模型绑定和验证的状态。它包含有关提交值、验证错误和模型状态的信息。
ModelState 属性可以通过 ControllerBase 类在控制器中访问。它是一种类似字典的结构,用于保存每个属性的模型绑定和验证结果。
使用 [ApiController] 属性时,ModelState 会在模型绑定期间自动填充。它通常用于在处理请求之前检查验证结果。
ASP.NET ModelState 示例
以下示例演示了如何在 Web API 控制器中使用 ModelState 进行验证。
var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); var app = builder.Build(); app.MapControllers(); app.Run();
这设置了一个基本的 ASP.NET 应用程序,并支持控制器。AddControllers
方法启用了模型绑定和验证。
using Microsoft.AspNetCore.Mvc; using System.ComponentModel.DataAnnotations; [ApiController] [Route("api/[controller]")] public class UsersController : ControllerBase { [HttpPost] public IActionResult CreateUser([FromBody] UserDto user) { if (!ModelState.IsValid) { return BadRequest(ModelState); } // Process valid user data return Ok(new { Message = "User created successfully", User = user }); } } public class UserDto { [Required(ErrorMessage = "Username is required")] [StringLength(50, MinimumLength = 3)] public string Username { get; set; } [Required(ErrorMessage = "Email is required")] [EmailAddress(ErrorMessage = "Invalid email format")] public string Email { get; set; } [Required(ErrorMessage = "Password is required")] [StringLength(100, MinimumLength = 8)] [RegularExpression(@"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).+$", ErrorMessage = "Password must be complex")] public string Password { get; set; } [Range(18, 120, ErrorMessage = "Age must be between 18 and 120")] public int Age { get; set; } }
此控制器演示了用户创建终结点的 ModelState 验证。CreateUser
方法在处理之前检查 ModelState.IsValid。
当验证失败时,它会返回一个 400 Bad Request 响应,其中包含 ModelState 错误。UserDto 类使用数据注解属性定义验证规则。
[Required] 属性确保字段不能为空。[StringLength] 验证长度限制。[EmailAddress] 检查电子邮件格式。[RegularExpression] 验证密码复杂性。
该示例展示了 ModelState 如何自动收集数据注解中的验证错误。它提供了一种在 API 响应中处理验证失败的一致方法。
来源
在本文中,我们探讨了 ASP.NET 8 中的 ModelState。这一强大功能简化了 Web 应用程序中的模型验证和错误处理。