如何通过 IDataErrorInfo 在按下保存按钮时验证我的实体?
我已经实现了 IDataErrorInfo 接口来验证我的实体。
<TextBox Text="{Binding User.Name, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}" />
它工作正常,但我想在用户按下保存按钮时重新验证数据。他们是否有任何方法可以在 IDataErrorInfo
中实现此功能。
I have implemented IDataErrorInfo
interface to validate my entities.
<TextBox Text="{Binding User.Name, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}" />
It works fine but I want to re-validate the data when the user presses the save button. Is their any way that exists to achieve this functionality in IDataErrorInfo
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
也许你应该考虑使用 INotifyDataErrorInfo 接口,
这应该给你更多的控制...包括 GetErrors 方法和更多你可以在按钮单击命令上执行的方法(我假设你正在使用 MVVM)
在这里找到信息:
http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifydataerrorinfo(v=vs.95).aspx
以及一篇不错的博客文章:
http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2009/11/18/silverlight-4-rough-notes-binding-with-inotifydataerrorinfo.aspx
Maybe you should consider using INotifyDataErrorInfo Interface
this should give you more control... including a GetErrors method and more which you could execute on the button click command (I asume you are using MVVM)
find Infos here:
http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifydataerrorinfo(v=vs.95).aspx
and a good blog post here:
http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2009/11/18/silverlight-4-rough-notes-binding-with-inotifydataerrorinfo.aspx
IDataInfo 需要实现两件事:
如果您想在保存之前手动验证实体,则只需检查 .Error 属性并仅在 .Error 为 null 或空时进行保存。我不知道 EF 可以自动使用 IDataErrorInfo 的方式。但是,当您的 UI 以正确的方式实现时,用户不应该选择保存数据,直到一切正常。您可以使用命令的 CanExecuteChanged 属性来实现此操作(仅当 .Error 为 null 或空时才使其为 true)。
IDataInfo requires two things to be implemented
If you want to manually validate your entity before saving, you can just check the .Error property and do a save only when .Error is null or empty. I do not know of a way in which the EF could automatically make use of IDataErrorInfo. However when your UI is implemented in the right way, the user shouldn't have the option to save the data until everything is ok. You can implement this using the CanExecuteChanged property of a command (make it true only when .Error is null or empty).