深入的将Model验证
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_自定义


ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_错误信息_02
手动添加验证的错误
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_复用_03

view里面显示每个属性的验证错误信息
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_字符串_04
显示整个model级别错误
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_错误信息_05

自定义验证


如果业务逻辑需要比较复杂的验证。而且这个验证逻辑可能到处复用的话就应该考虑使用自定义的Attribute
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_字符串_06


ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_复用_07
因为DataType使用的类型是Url
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_字符串_08
把原来的默认的自带的验证url的属性去掉,自己写一个验证url的
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_字符串_09
新建文件夹。并新建类
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_asp.net core 2.2_10
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_自定义_11
首先需要一个属性放错误信息
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_自定义_12
context是model验证的上下文

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_自定义_13
然后验证url。Context.model就是我们要验证的属性

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_错误信息_14
我们 知道我们要验证的是字符串,所以要转成字符串
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_asp.net core 2.2_15

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_复用_16


ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_asp.net core 2.2_17
测试
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_自定义_18
说明自定义的Attribute起作用了
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_asp.net core 2.2_19

远程验证

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_字符串_20
第一个参数是Aciton 的名字,第二个参数是Controller的名字
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_asp.net core 2.2_21

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_字符串_22
然后在RoleController里面添加Action
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_字符串_23

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_asp.net core 2.2_24

既接收get请求也接收post请求
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_复用_25
再看View,有一个RoleName
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_字符串_26
使用Bind绑定到这里
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_错误信息_27
随便写一个角色,没点提交按钮。 会自动提交到后台
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_错误信息_28
后台就会到断点这里
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_错误信息_29
写一个已经存在的角色就会提示存在了
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_字符串_30
返回的信息如果是false是什么效果呢?
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_字符串_31
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_字符串_32
错误信息是在ViewModel里面定义的
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_自定义_33
第一个参数是Action的名字 这么写有利于重构
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_asp.net core 2.2_34
如果后面的Controller也用nameof的形式,就会报错了
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_字符串_35
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again_asp.net core 2.2_36
所以第二个参数只能写字符串