闽公网安备 35020302035485号
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>net10.0</TargetFramework> <Nullable>enable</Nullable> <ImplicitUsings>enable</ImplicitUsings> </PropertyGroup> <PropertyGroup> <InterceptorsNamespaces>$(InterceptorsNamespaces);Microsoft.AspNetCore.Http.Validation.Generated</InterceptorsNamespaces> </PropertyGroup> </Project>下面是一个具体的案例:
using Microsoft.AspNetCore.Http.Validation;
using Microsoft.AspNetCore.Mvc;
using System.ComponentModel.DataAnnotations;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddValidation();
var app = builder.Build();
// DisableValidation无效化验证
app.MapGet("/person/{id}",
([Range(1, 10000, ErrorMessage = "id的范围在1~10000之间")] int id)
=> TypedResults.Ok(id)).DisableValidation();
//验证
app.MapPost("/person", ([Required(ErrorMessage = "姓名不能为空")] string name, [Range(0, 120, ErrorMessage = "年龄应该在0~120之间")] int age) =>
TypedResults.Ok($"{name},{age}"));
// 堆代码 duidaima.com
//嵌套验证
app.MapPost("/order", ([FromBody] Order order) =>
TypedResults.Ok($"{order.OrderNo},{order.Amount}"));
app.Run();
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Order
{
[Required(ErrorMessage = "订单号不能为空")]
public string OrderNo { get; set; }
[Range(1d, double.MaxValue, ErrorMessage = "金额必需大于0")]
public decimal Amount { get; set; }
[Required(ErrorMessage = "订单用户必须填写")]
public User OrderUser { get; set; }
}
public class User
{
[Range(1, int.MaxValue, ErrorMessage = "id大于0")]
public int UserID { get; set; }
[Required(ErrorMessage = "用户名不能为空")]
public string UserName { get; set; }
}
验证的效果:

嵌套验证: