asp.net-core – 是否可以在ASP.NET Core中使用自定义ModelState
发布时间:2020-12-16 07:06:48 所属栏目:asp.Net 来源:网络整理
导读:我有以下ASP.NET CORE操作: public async TaskIActionResult Post([FromBody]Model model) { IValidatorModel validator = new ValidatorModel(); Boolean valid = await validator.ValidateAsync(model); if (!valid) return HttpBadRequest(validator.Get
我有以下ASP.NET CORE操作:
public async Task<IActionResult> Post([FromBody]Model model) { IValidator<Model> validator = new Validator<Model>(); Boolean valid = await validator.ValidateAsync(model); if (!valid) return HttpBadRequest(validator.GetErrors()); // Do something } 我没有在我的操作中定义验证器,而是如何将其与IOC和自定义ModelState验证提供程序集成? 解决方法
首先,您需要实现自定义
IModelValidatorProvider和
IModelValidator
请考虑我写的这个简单的例子. public class MyCustomModelValidatorProvider : IModelValidatorProvider { public void GetValidators(ModelValidatorProviderContext context) { if (context.ModelMetadata.MetadataKind == ModelMetadataKind.Type) { var validatorType = (typeof(MyCustomModelValidator<>).MakeGenericType(context.ModelMetadata.ModelType)); var validator = Activator.CreateInstance(validatorType); context.Validators.Add((IModelValidator)validator); } } } public interface ISelfValidatableModel { string Validate(); } public class MyCustomModelValidator<T> : IModelValidator where T : ISelfValidatableModel { public bool IsRequired { get { return false; } } public IEnumerable<ModelValidationResult> Validate(ModelValidationContext context) { var model = (T)context.Model; var error = model.Validate(); if (!string.IsNullOrEmpty(error)) { return new List<ModelValidationResult>() { new ModelValidationResult(model.ToString(),error) }; } return Enumerable.Empty<ModelValidationResult>(); } } 您需要将自定义提供程序添加到MVC选项中 services.AddMvc(options => { options.ModelValidatorProviders.Add(new MyCustomModelValidatorProvider()); }); 框架内置示例: DataAnnotationsModelValidatorProvider.cs DataAnnotationsModelValidator.cs (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何在IIS7 for ASP.NET中创建虚拟目录?
- jqGrid过滤器工具栏显示单个列的搜索运算符选择器
- asp.net-mvc – MVC – 重定向在构造函数内
- asp.net-mvc-4 – 在asp.net MVC URL中重写或更改路由?
- asp.net – 混合Windows / Forms身份验证跨站点
- 在asp.net mvc应用程序中从Javascript访问C#变量
- asp.net – 在Appharbor上的Dotless
- asp.net-mvc – HtmlHelper NameFor方法
- asp.net-mvc – MVC控制器正在被调用两次
- asp.net-mvc – ASP.NET MVC 4异步子操作
推荐文章
站长推荐
- ASP.net中的免费PDF查看器
- ASP.NET MVC Controller FileContent ActionResu
- asp.net – HttpContext.Current.Cache可用于所有
- 如何为ASP.NET Core Angular应用程序设置默认端口
- ASP.NET bin目录中的Oracle oci.dll无法删除/不起
- iis – “立即启动应用程序池”和“启动模式Alwa
- asp.net-mvc – 如何每秒自动刷新MVC PartialVie
- ASP.Net OData在LB中通过SSL终止失败
- 间歇性ASP.Net状态服务错误
- asp.net – 未知的服务器标签’ajaxToolkit:Cal
热点阅读