<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; } }验证的效果:
嵌套验证: