在C#项目里,模型验证通常用来确保用户输入或接口接收的数据符合业务要求。使用DataAnnotations可以用声明式特性把规则直接写在实体类上,不需要在业务代码里写大量if判断。下面先看一个基础示例所用的示意图。

一、定义带有验证特性的模型
我们先创建一个用户模型类,在属性上使用DataAnnotations特性。需要引用System.ComponentModel.DataAnnotations命名空间。
using System.ComponentModel.DataAnnotations;
public class UserModel
{
[Required(ErrorMessage = "用户名不能为空")]
[StringLength(20, MinimumLength = 3, ErrorMessage = "用户名长度需为3到20个字符")]
public string UserName { get; set; }
[Required(ErrorMessage = "年龄不能为空")]
[Range(1, 120, ErrorMessage = "年龄必须在1到120之间")]
public int Age { get; set; }
[EmailAddress(ErrorMessage = "邮箱格式不正确")]
public string Email { get; set; }
}
二、使用Validator手动验证模型
在基础场景中,可以借助Validator类对模型实例做校验,并收集所有错误信息。
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
class Program
{
static void Main()
{
var user = new UserModel
{
UserName = "ab",
Age = 200,
Email = "test@ipipp.com"
};
var results = new List<ValidationResult>();
var context = new ValidationContext(user);
bool isValid = Validator.TryValidateObject(user, context, results, true);
if (!isValid)
{
foreach (var item in results)
{
Console.WriteLine(item.ErrorMessage);
}
}
else
{
Console.WriteLine("验证通过");
}
}
}
常用验证特性说明
Required:标记属性为必填项StringLength:限制字符串最大和最小长度Range:规定数值范围EmailAddress:检查是否为合法邮箱格式
三、在ASP.NET中自动验证
如果是在Web开发里,控制器接收模型后,框架会自动执行DataAnnotations验证。可通过ModelState判断结果。
using Microsoft.AspNetCore.Mvc;
public class UserController : Controller
{
[HttpPost]
public IActionResult Create(UserModel model)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
return Ok("数据合法");
}
}
小结
通过上述方式,C#怎么实现数据验证这个问题就有了清晰答案。使用DataAnnotations实现模型验证,既减少了重复代码,也让规则更直观。初学者可以从手动Validator开始练习,再过渡到框架集成验证。
C#DataAnnotations模型验证修改时间:2026-07-26 17:00:19