问题标签 [idataerrorinfo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
19523 浏览

wpf - 在 MV-VM 中使用 IDataErrorInfo

如果我的域对象实现了 IDataErrorInfo,并且我正在使用 MV-VM,我如何通过 ViewModel 将错误传播到 View 中?如果我直接绑定到模型,我会在绑定上将“ValidateOnExceptons”和“ValidateOnErrors”属性设置为 true。但是我的 ViewModel 没有实现 IDataErrorInfo。只有我的模型。我该怎么办?

澄清 我正在处理在域对象中实现 IDataErrorInfo 的现有代码库。我不能只在我的视图模型中实现 IDataErrorInfo。

0 投票
2 回答
3353 浏览

c# - IDataErrorInfo:不验证输入

我有一个包含文本框的用户控件。我有一个名为 Person 的类,它实现了 IDataErrorInfo 接口:

现在用户控件公开了一个名为 SetSource 的方法,代码通过该方法设置绑定:

包含用户控件的 WPF 窗口具有以下代码:

鉴于此代码,绑定工作正常,但验证永远不会被触发。这段代码有什么问题?

0 投票
1 回答
1064 浏览

c# - 如何停止 DataGridView 调用 IDataErrorInfo.this[string columnName] 获取?

我有一个实现 IDataErrorInfo 的数据对象,但是验证逻辑有点慢。不是那么慢,但足够慢,你不想调用它很多次。在我的应用程序中,这些对象的列表显示在 DataGridView 控件中。网格是只读的,并且只会包含有效的数据对象,但是 DataGridView 坚持为网格中的每个单元格调用 IDataErrorInfo.this[string columnName] ,这使得重新绘制非常缓慢。

我尝试将 ShowCellErrors 和 ShowRowErrors 设置为 false,但它仍在调用 IDataErrorInfo.this[string columnName]。有什么想法可以阻止它验证我知道有效的对象吗?

0 投票
2 回答
1658 浏览

wpf - 使用 IDataErrorInfo 并设置 Validation.HasError 样式

在 WPF 使用IDataErrorInfo和样式中,我想创建表单,在其中我可以在验证数据时为最终用户提供三种不同的状态以使场景更清晰

1)我旁边有文本框我有图标,它为最终用户提供了期望的输入文本框类型 - 带有信息图标的初始状态

2)一旦用户输入数据,它就会验证它并决定它是否有效 - 大多数情况下它会显示十字(X)图标表示无效数据

3)当它正在验证时,UpdateSourceTrigger="PropertyChanged"它会在验证后立即将十字图标变为绿色复选标记

IE

我如何使用IDataErrorInfo和样式来实现这一点,我尝试这样做,但是一旦我的表单被加载,它就会使所有数据无效并在第一时间显示十字图标。我想为三种状态(Initial info, Invalid data, Valid data)显示不同的工具提示和不同的图标

0 投票
1 回答
148 浏览

asp.net-mvc - 如何重构此验证?

我有一个实现 IDataErrorInfo 的验证类,它具有您必须实现的所有方法。

一个是

现在在这个 switch 语句中,我对我的表单进行了一些验证。

现在我注意到我的很多表单都需要完全相同的验证内容。

所以现在当我需要添加更多验证时,我会创建一个实现“IDataErrorInfo”的新类,添加额外的验证。

然后在视图中我做这样的事情

我只是不喜欢这样一个事实,我需要有 2 个单独的 try catch 语句,这些语句可以继续增长。如果我需要说“核心”和“更多”并添加一些无法进入其中任何一个的验证,我正在寻找另一个尝试捕获。

我试图去“CoreValidation”类并提取出switch语句和属性并将其放入一个新类中。

然后我的计划是使用 swtich 语句调用该类和方法。所以在“更多”验证类中我会在这个

然后我只会有一次尝试捕获并且我不会复制任何代码,因为一切都会调用相同的方法(CoreValidation)。

但是 updateModel 似乎无法解决这个问题。当 UpdateModel 尝试设置它需要设置的任何东西时,它找不到属性方法,所以所有属性都像

“用户名”全部设置为空。

那么我该如何做我想做的事呢?

谢谢

0 投票
2 回答
962 浏览

asp.net-mvc - 如何对 IDataErrorInfo 进行单元测试?

我正在阅读 Asp.net MVC Framework,并且正在阅读有关 IDataErrorInfo 作为验证形式的信息。

所以我只是要发布他所拥有的。

产品类别

产品存储库。

控制器

然而,我在书中没有看到如何实际进行单元测试。就像他向您展示了如何对他的服务层内容进行单元测试,但对单元测试 IDataErrorInfo 却一无所知。

那么我将如何对此进行单元测试呢?我喜欢检查错误消息以查看它们是否相同。就像我传入一个空字段一样,我想检查错误消息是否适合这个空字段。

在我喜欢在需要验证的东西之后检查 if 语句逻辑以查看它是否正在执行预期的操作,但我什至不知道如何调用这个部分类,特别是因为你通常不想点击进行单元测试时的数据库。

0 投票
1 回答
1399 浏览

c# - C# IDataErrorInfo 和子属性

我有一个绑定到 winform 的对象,这个对象实现了 IDataErrorInfo。我有一个错误提供程序。问题是当 aa 属性的属性发生变化时。

更改年龄时没有问题(即规则已正确检查并显示/删除)。但是当我更改职位时,错误不会显示/删除(实际上属性 Title 不属于对象人员)。我该如何进行检查?

0 投票
2 回答
4593 浏览

wpf - 单击按钮时验证 ViewModel

我有一个实现 IDataErrorInfo 和主细节视图的 ViewModel。当用户点击详细视图中的保存按钮而不是更早时,如何触发当前 ViewModel 项的验证?

0 投票
2 回答
8901 浏览

c# - winforms中的IDataErrorInfo

可以在 winforms 应用程序中正确使用 IDataError 信息吗?过去,我以通常的方式 (1) 进行绑定,并在特定控件的 OnValidating 事件中进行了验证。我想将数据验证移动到域模型中,以便我可以轻松地换出用户界面,并将所有逻辑都放在一个地方。

我正在研究 IDataErrorInfo 但我发现的所有内容都与 WPF 相关,并且正在开发的应用程序严格来说是一个 winforms 应用程序。

我还注意到 WPF 中使用的绑定在 System.Windows.Data 中,而我一直使用的绑定在 System.Windows.Forms 中(当我尝试添加它时似乎没有作为资源-我使用的是3.5)。除了属性“ValidatesOnDataErrors”之外,两者之间有区别吗?

(1) 通常的方式是:

0 投票
1 回答
320 浏览

c# - 在实现 IDataErrorInfo 时,如何在更新之后而不是之前验证 clr 属性?

我已经在我的一个类中实现了 IDataErrorInfo 来验证该类的属性。该属性绑定到我的 wpf 用户控件上的控件。验证工作正常,除了有一个重要缺陷。

它似乎在更新属性之前调用了 IDataErrorInfo 成员 public string this[string columnName],所以当我检查正在更改的属性的值时,它包含以前的值而不是刚刚输入的值。因此,验证总是落后一步。这意味着我无法检查刚刚输入的错误值。

有没有办法强制在属性更新之后而不是之前调用此验证。我尝试将 UpdateSourceTrigger 更改为 LostFocus 和 PropertyChanged,但它们仍然报告以前的值,只是在不同的时间。

谢谢。