Skip to content

后端使用RsCode时,会将前端的参数自动进行格式转换,例如 前端数据全是字符类型,但后端定义某些字段可能是日期,bool或数字类型,此时RsCode会自动将其转换成正确的类型

添加数据验证

Program.cs中使用UseServiceContext() 激活AspectCore

csharp
public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
            .UseServiceContext(o =>
            {
                var p = Predicates.ForService("Rswl.*");
                o.AddDataAnnotations(p);
            })
           .ConfigureWebHostDefaults(webBuilder =>
            {
                  webBuilder.UseStartup<Startup>();
           });

注意AddControllersAsServices方法

csharp
services.AddControllersWithViews().AddControllersAsServices();

定义IDataState 属性,判断DataState.IsValid实现数据验证

结合异常处理会直接抛出错误信息

常用的内置验证 Attribute:

tex
[CreditCard]: 验证属性是信号卡号格式。
[Compare]: 验证模型中的两个属性匹配。
[EmailAddress]: 验证属性是 Email 格式。
[Phone]: 验证属性是 电话号码 格式。
[Range]: 验证属性在指定的范围内。
[RegularExpression]: 验证数据匹配指定的正则表达式。
[Required]: 使属性成为必填。
[StringLength]: 验证字符串类型属性的最大长度。
[Url]: 验证属性是 URL 格式。

添加RsCode服务,自动添加模型验证服务

csharp
service.AddRsCode();

清除数据验证

项目报错

text
The xxx field is required.

编辑项目文件,修改为

xml
<Nullable>disable</Nullable>

自定义模型验证

csharp
//startup.cs中添加
services.AddControllers(config => {
    config.Filters.Add<AntiXSSAttribute>();
    config.Filters.Add<ModelValidateFilter>();
    config.OutputFormatters.Insert(0, new RsOutputFormatter());
    config.InputFormatters.Insert(0, new RsInputFormatter());
}).AddControllersAsServices()
    .ConfigureApiBehaviorOptions(options =>
                                 {
                                     options.SuppressModelStateInvalidFilter= true; //使用自定义验证
                                 });