首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ASP.NET Core2.2未在IValidatableObject中触发验证方法

ASP.NET Core是一个跨平台的开源Web应用程序框架,它是.NET Core的一部分。ASP.NET Core 2.2是ASP.NET Core的一个版本,它引入了许多新功能和改进。

在ASP.NET Core中,IValidatableObject接口用于实现自定义模型验证。当模型绑定发生时,ASP.NET Core会自动调用模型中实现了IValidatableObject接口的Validate方法,以执行自定义验证逻辑。

然而,ASP.NET Core 2.2中的一个问题是,它未能正确触发IValidatableObject中的验证方法。这可能是由于框架的bug或配置问题导致的。

为了解决这个问题,可以尝试以下几个步骤:

  1. 确保你的模型类实现了IValidatableObject接口,并在类中实现了Validate方法。Validate方法应该包含你的自定义验证逻辑。
  2. 确保你的模型类被正确地绑定到请求数据。可以通过使用[FromBody]或[FromForm]等属性来指定绑定方式。
  3. 检查你的ASP.NET Core应用程序的版本。如果你正在使用的是ASP.NET Core 2.2之前的版本,那么这个问题可能已经在后续版本中得到修复。尝试升级到最新版本的ASP.NET Core,看看问题是否得到解决。
  4. 如果问题仍然存在,可以尝试使用其他验证方式,如数据注解或自定义验证属性。这些方式可以在模型类的属性上应用,以实现更细粒度的验证。

总结起来,ASP.NET Core 2.2中可能存在一个问题,导致IValidatableObject中的验证方法未被正确触发。为了解决这个问题,可以尝试实施上述步骤,并确保你的应用程序是最新版本的ASP.NET Core。如果问题仍然存在,可以考虑使用其他验证方式来实现模型验证。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET MVC基于标注特性的Model验证:DataAnnotationsModelValidatorProvider

通过前面的介绍我们知道它是AssociatedValidatorProvider的子类,后者在用于获取ModelValidator的GetValidators方法已经根据指定的Model元数据所有特性创建出来...在重写的GetValidators方法,针对指定的每一个ValidationAttribute,它先根据其类型从AttributeFactories获取一个对应的DataAnnotationsModelValidationFactory...ASP.NET MVC基于标注特性的Model验证:ValidationAttribute ASP.NET MVC基于标注特性的Model验证:DataAnnotationsModelValidator...ASP.NET MVC基于标注特性的Model验证:DataAnnotationsModelValidatorProvider ASP.NET MVC基于标注特性的Model验证:将ValidationAttribute...应用到参数上 ASP.NET MVC基于标注特性的Model验证:一个Model,多种验证规则

91580

ASP.NET MVC5的Model验证

Model验证ASP.NET MVC的重要部分,它主要用于判断输入的数据类型及值是否符合我们设定的规则,这篇文章就介绍下ASP.NET MVCModel验证的几种方式。...后台验证 DataAnnotation ValidationAttribute IValidatableObject IDataErrorInfo 前端验证 后台验证 DataAnnotation...这里我们通过覆写DataAnnotation命名空间中ValudationAttribute类的IsValid方法来实现自定义验证。...IValidatableObject 通过实现IValidatableObject接口进行数据的验证,示例代码如下: public class Person : IValidatableObject {...除了我们自己手写js代码外,ASP.NET MVC也提供了前端验证方法,要启用ASP.NET MVC提供的前端验证方法需要在页面引入三个js文件: jquery-1.10.2.min.js(也可以是其它版本的

1.5K20

ASP.NET MVC下的四种验证编程方式

具体的验证实现在重写的IsValid方法,如果被验证的值在这个列表,则视为验证成功并返回True。为了提供一个友好的错误消息,我们重写了方法FormatErrorMessage。...由于ASP.NET MVC会自动提取应用在绑定参数类型上的ValidationAttribute特性对绑定的参数实施自动化验证,所以我们根本不需要在具体的Action方法来对参数作手工验证。...ASP.NET MVC在进行参数绑定过程据此来验证参数之外,我们还可以将验证操作直接定义在数据类型。...validationContext); 4: } 如上面的代码片断所示,IValidatableObject接口具有唯一的方法Validate,针对自身的验证就实现在该方法。...四、让数据类型实现IDataErrorInfo接口 上面我们让数据类型实现IValidatableObject接口并将具体的验证逻辑定义在实现的Validate方法,这样的类型能够被ASP.NET MVC

1.4K80

ASP.NET MVC以ModelValidator为核心的Model验证体系: ModelValidator

值得一提的是,我们在调用ModelValidator的Validate方法确定目标数据是否通过验证时,有时候会将方法返回值和定义在类型ValidationResult具有如下定义的静态只读字段Success...等)的方式来定义相应的验证规则,这是ASP.NET MVC 提供的默认Model验证方式。...如下面的代码片断所示,针对自身的验证实现在IValidatableObject的Validate方法。...(ValidationContext validationContext); 4: } ASP.NET Model验证系统定义了专门的ModelValidator来验证种实现了IValidatableObject...由于被验证本身已经将验证实现在了Validate方法,所以ValidatableObjectAdapter只需要调用该方法并将验证结果从ValidationResult类型转换成ModelValidationResult

1.4K10

Asp.NetCore Web开发之输入验证

MVC框架,也就是说我们可以直接引用,它们的引用如下所示: //如果你用的asp.net core MVC 你可以直接复制此代码到你需要的地方 <script src="~/lib/jquery-validation...,<em>验证</em>失败的显示文字)这个<em>方法</em>自定义规则,该<em>方法</em>的第二个参数是一个callback类型的函数,在<em>验证</em>时被调用,value是输入的值,element是<em>验证</em>的元素。...以上就是该框架的大体用法,但解释此用法不是本节的主要目的,我们了解了它的用法后,接下来介绍一个更简单的用法:<em>asp.net</em> core的输入<em>验证</em>,为了简化表单<em>验证</em>的代码量,<em>asp.net</em> core 从后端出发...: <em>方法</em>二(模型类实现<em>IValidatableObject</em>接口,实现自身<em>验证</em>): public class PersonData:<em>IValidatableObject</em> { [StringLength...,可以直接访问属性,进行数据限定,ValidationResult<em>方法</em>的参数一是错误信息,参数二是属性名,接下来看看在Action<em>中</em>如何使用<em>验证</em>: public IActionResult Test(PersonData

1.9K30

《ASP.ENT Core 与 RESTful API 开发实战》(第3章)-- 读书笔记(

第 3 章 ASP.NET Core 核心特性 3.3 依赖注入 通常情况下,应用程序由多个组件构成,而组件与组件之间往往存在依赖关系 当我们需要获取数据时,通常的做法是实例化依赖的类,然后调用类里面的方法...,所有被放入依赖注入容器的类型或组件被称为服务 容器的服务有两种类型:第一种是框架服务,它们是 ASP.NET Core 框架的组成部分;另一种是应用服务,所有由用户放到容器的服务都属于这一类 在...,映射完成后,再将请求传给对应的路由处理器处理 对于 ASP.NET Core MVC,定义路由的方法有以下两种: 基于约定的路由 特性路由 基于约定的路由需要在 Startup 类中指明,具体来说,应该在配置...类的属性 ASP.NET Core MVC 提供两种创建自定义验证方法: 创建新特性,并使它继承自 ValidationAttribute 类 使待验证的 Model 实现 IValidatableObject...,而后者不会,它使用 ObjectFactory 对指定的过滤器类型进行实例化,如果使用前者,需要在 Startup 类的 ConfigureServices 方法中将该过滤器添加到容器

1.1K10

ASP.NET Core端点路由 作用原理

端点路由(Endpoint Routing)最早出现在ASP.NET Core2.2,在ASP.NET Core3.0提升为一等公民。 ?...这种方式意味着在处理管道,MVC中间件之前的中间件将无法获得路由信息。 路由信息对于某些中间件非常有用,比如CORS、认证中间件(认证过程可能会用到路由信息)。...该中间件查看应用程序定义的端点集合,并根据请求选择最佳匹配。 UseEndpoints 将端点执行添加到中间件管道。...MapGet、MapPost等方法将 处理逻辑连接到路由系统;其他方法ASP.NET Core框架特性连接到路由系统。...bingo, 猜想得到源码验证。 结论 端点路由:允许ASP.NET Core应用程序在中间件管道的早期确定要调度的端点, 以便后续中间件可以使用该信息来提供当前管道配置无法提供的功能。

1.1K10

C# API的模型和它们的接口设计

INotifyDataErrorInfo接口旨在支持Silverlight 4的异步验证,其基本想法是修改属性会触发服务调用,被调用的服务最终会结束并更新错误状态。...通常这用于单属性验证,不过也可以通过ValidationContext来访问对象的其他属性。 基于属性的验证的一个优点是,一些框架(比如ASP.NET MVC/WebAPI)已经选定它作为验证接口。...为了解决这个问题,需要为模型提供两个额外的方法验证:跨所有字段执行验证触发类似“required”这样的规则。 清除错误:从对象删除所有已触发验证错误。...IValidatableObject 如果不简要讨论下IValidatableObject接口,那就是我的失职。...我很喜欢这个方法,因为它可以触发对象的完整验证,所以它可以解决空表单问题。它返回ValidationResult对象,比原始字符串要好得多。

1.6K20

ASP.NET Core 2.0 建立规范的 REST API -- 预备知识

在RPC的世界里, 节点仅仅就是可以在远程被触发的函数, 而在REST的世界里, 节点就是实体, 也叫做资源....实体验证 ASP.NET Core内置的实体验证是通过验证属性标签来实现的,大多数情况下这样会很方便。 例如: ?...ASP.NET Core内置支持两种方式来进行自定义验证:通过继承ValidationAttribute来创建自定义验证属性标签,或者让实体实现IValidatebleObject接口。...使用自定义验证属性标签: ? 把该标签放到name属性上 ? 使用刚才的请求,其结果是: ? 另一种方式,在Person类实现IValidatableObject接口 ?...ASP.NET Core MVC的过滤器分为5类: 授权过滤器,它是第一个运行的,它的作用就是判断HTTP Context的用户是否拥有当前请求的权限,如果用户没有权限,那么它就会“短路”管道。

1.6K00

【半译】扩展shutdown超时设置以保证IHostedService正常关闭

我最近发现一个问题,当应用程序关闭时,我们的应用程序没有正确执行在IHostedService的StopAsync方法。经过反复验证发现,这是由于某些服务对关闭信号做出响应所需的时间太长导致的。...在ASP.NET核心2.X发生这种情况只是之后在应用程序启动处理请求,而在ASP.NET核心3.x托管服务开始只是之前在应用程序启动处理请求。...默认情况下,这会在5秒后触发。这意味着5秒后将放弃托管服务关闭- IHostedService必须在此超时内关闭所有托管服务。...解决方法:增加shutdown超时时间 HostOptions默认情况下未在任何地方显式配置它,因此您需要在ConfigureSerices方法手动对其进行配置。...摘要 在这篇文章,我讨论了一个最近发现的问题,该问题是当应用程序关闭时,我们的应用程序未在IHostedService实现的StopAsync运行该方法

1.2K31

.NET Core实战项目之CMS 第十章 设计篇-系统开发框架设计

可是我这里还是要啰嗦两句给你介绍下: 既然微软已经在前两天将正式版的.NET Core SDK升级到了2.2的版本,那么我们的CMS系统就用.NET Core2.2进行搭建吧!...注意:ASP.NET Core2.2对VisualStudio有一定的要求必须是2017的高版本才能用。其目前的版本是15.8.4 总之尽量不要低于我这个版本,我正准备升级呢!...因为实际引用可能我们页面需要的数据跟我们数据库的数据并不完全一样的,而且,有时候我们页面可能包含了更多地信息,这时候我们怎么往视图中传递数据呢?这时候我们就有了ViewModel的概念。...Infrastructure 基础设施层:这个层也是我们代码的核心层了,我们会在这里实现很多我们通用的方法,比方说帮助类,对字符串String进行一些扩展,序列化与反序列化,HTTP请求,过滤器,日志功能...接着对我们这个ASP.NET Core的CMS实战项目进行了开发框架的设计。并对每个项目的所要实现的功能以及各自的职责进行了相关的介绍!相信你已经能够清楚的明白了这个架构的思想!

92220

.Net Core实现健康检查

ASP.NET Core 提供运行状况检查中间件和库,以用于报告应用基础结构组件的运行状况。 运行状况检查由应用程序作为 HTTP 终结点公开。...从.NET Core2.2开始,我们不需要为运行状态在去自定义检查控制器和接口,而是框架本身已经为我们提供了运行状况的检查服务。...Microsoft.Extensions.Diagnostics.HealthChecks 安装后,我们需要在Startup.cs文件的ConfigureServices()和Configure()方法添加...IApplicationBuilder app, IWebHostEnvironment env) { app.UseHealthChecks("/health"); } 我们在configure()方法配置完端点后...健康检查界面 Install-Package AspNetCore.HealthChecks.UI 安装完成后,需要相应地在ConfigureServices()和Configure()方法调用相应的服务方法

1.1K30
领券