后端使用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; //使用自定义验证
});