Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否在IValidatableObject上设置ValidationContext的项集合?_C#_Asp.net Mvc_Asp.net Mvc 3_Validation_Custom Model Binder - Fatal编程技术网

C# 是否在IValidatableObject上设置ValidationContext的项集合?

C# 是否在IValidatableObject上设置ValidationContext的项集合?,c#,asp.net-mvc,asp.net-mvc-3,validation,custom-model-binder,C#,Asp.net Mvc,Asp.net Mvc 3,Validation,Custom Model Binder,我有一个从IValidTeableObject派生的视图模型类,我正在使用ValidationContext的Validate方法从我的控制器对其进行评估 我希望能够在ObjectInstance中测试视图模型类本身的更多属性。我可能会将这些东西添加到模型中,然后一切都会变得简单,但我觉得这些东西并不真正属于视图模型类,因为它们更多地是关于该对象的当前状态 我想知道ValidationContext中的Items集合是否适合存储这些东西。。。唯一的问题是,我似乎找不到一个资源来解释我将如何在字典

我有一个从IValidTeableObject派生的视图模型类,我正在使用ValidationContext的Validate方法从我的控制器对其进行评估

我希望能够在ObjectInstance中测试视图模型类本身的更多属性。我可能会将这些东西添加到模型中,然后一切都会变得简单,但我觉得这些东西并不真正属于视图模型类,因为它们更多地是关于该对象的当前状态

我想知道ValidationContext中的Items集合是否适合存储这些东西。。。唯一的问题是,我似乎找不到一个资源来解释我将如何在字典中添加内容

这有意义吗?在检查对象的ModelState之前,是否有人可以解释如何填充ValidationContext.Items

更新#1-我在一篇关于EF CTP5()的旧博客文章中发现了以下内容,但我不确定如何使用这些信息:

因此,可以使用自定义验证逻辑来完全替换内置验证或过滤掉内置验证返回的一些验证错误。关于DbContext.ValidateEntity()方法的另一个细节是该方法的第二个参数,如下所示:

i词典项目

默认情况下,其值始终为空。然而压倒一切 DbContext.ValidateEntity()允许将非空值传递给此 方法,通过调用:

return base.ValidateEntity(entityEntry,myItems)


更新#2-我尝试使用自定义模型绑定器,但我也遇到了麻烦-似乎没有办法简单地将项目添加到ValidationContext,然后调用base.OnModelUpdated(controllerContext,bindingContext)方法。

如果您正在构建自己的模型验证程序,请查看。如果这听起来太多工作,也许可以尝试该项目,它将允许您向视图模型中添加自定义验证规则,并将它们存储在它们自己的类中。

实际上,我只想了解ValidationContext中的Items集合的用途。在字典中有对象可以帮助我验证视图模型,这有意义吗?查看FluentValidation源代码,它将MVC的
ModelValidatorProvider
子类添加到global.asax中的
ModelValidatorProviders.Providers
。它没有使用任何DbContext/EF内容,我在谷歌上看到了一些关于
ModelMetadataProvider
ModelValidatorProvider
如何工作的文章。我很感谢你的评论。我查看了github上的FluentValidation源代码。我仍然不知道在哪里可以影响传递给我的IValidatableObject的ValidationContext对象,尽管我确实看到了这段代码中使用ModelValidatorProvider的部分。我不确定是否可以添加更多内容-您已经达到了我理解的极限。如果你确实取得了任何进展,请用你的发现更新这个问题。这似乎也与我想做的事情密切相关,但我很难将这些部分组合起来: