using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using VOL.Core.Filters; using VOL.Core.ObjectActionValidator; using VOL.Entity.DomainModels; namespace VOL.WebApi.Controllers { /// ///1、普通参数校验只需要标识属性:[ObjectGeneralValidatorFilter(ValidatorGeneral.xxx,ValidatorGeneral.xxx)], ///需要在ValidatorGeneral枚举中添加枚举值(参数名),并在UseMethodsGeneralParameters方法中注入进去即可在任何地方重复使用 /// /// 2、model校验只需要标识属性[ObjectModelValidatorFilter(ValidatorModel.xxx)] /// 需要在ValidatorModel枚举中添加枚举值(参数名), /// 并在UseMethodsModelParameters方法中注入进去(注入时可以指定需要验证的字段)即可在任何地方重复使用 /// --如果其他方法使用的是同一个model,但验证的字段不同,在ValidatorModel重新添加一个枚举值, /// --并在UseMethodsModelParameters方法注入,添加新的指定字段即可 /// [JWTAuthorize, ApiController] [Route("validatorExample")] public class ObjectActionValidatorExampleController: Controller { public ObjectActionValidatorExampleController() { } /// /// 验证UserName与PhoneNo为必填 /// /// /// /// [HttpPost, HttpGet, Route("test1")] [ObjectGeneralValidatorFilter(ValidatorGeneral.UserName,ValidatorGeneral.PhoneNo)] public IActionResult Test1(string userName,string phoneNo) { return Json("参数验证通过"); } /// /// 验证PhoneNo为必填 /// /// /// /// [HttpPost, HttpGet, Route("test2")] [ObjectGeneralValidatorFilter(ValidatorGeneral.PhoneNo)] public IActionResult Test2(string userName, string phoneNo) { return Json("参数验证通过"); } /// /// 验证字符长度与值大小 /// /// /// /// [HttpPost, HttpGet, Route("test3")] [ObjectGeneralValidatorFilter(ValidatorGeneral.Local, ValidatorGeneral.Qty)] public IActionResult Test3(string local, string qty) { return Json("参数验证通过"); } /// /// Login配置的规则用户名与密码必填 /// /// /// [HttpPost, HttpGet, Route("Test4")] [ObjectModelValidatorFilter(ValidatorModel.Login)] public IActionResult Test4([FromBody]LoginInfo loginInfo) { return Json("参数验证通过"); } /// /// LoginOnlyPassWord配置的规则密码必填 /// /// /// [HttpPost, HttpGet, Route("Test5")] [ObjectModelValidatorFilter(ValidatorModel.LoginOnlyPassWord)] public IActionResult Test5([FromBody]LoginInfo loginInfo) { return Json("参数验证通过"); } /// /// 同时验证实体LoginInfo与单个参数phoneNo /// Login配置的规则用户名与密码必填,手机号必填 /// /// /// [HttpPost, HttpGet, Route("Test6")] [ObjectModelValidatorFilter(ValidatorModel.Login)] [ObjectGeneralValidatorFilter(ValidatorGeneral.PhoneNo)] public IActionResult Test6([FromBody]LoginInfo loginInfo, string phoneNo) { return Json("参数验证通过"); } } }