在WPF中使用MVC验证
本文关键字:MVC 验证 WPF | 更新日期: 2023-09-27 18:07:02
我使用MVC与实体框架一段时间。现在我需要做一个wpf应用程序,我正在寻找一种方法来验证像模型状态在wpf
这是我的类的样子
public class Customer
{
public int Id { get; set; }
[Required]
[MaxLength(100)]
public string Name { get; set; }
[MaxLength(100)]
public string Address { get; set; }
[MaxLength(20)]
public string PhoneNumber { get; set; }
[EmailAddress]
public string Email { get; set; }
public List<Order> Orders { get; set; }
}
有什么简单的方法可以让我检查它是否有效?
我真正想避免的是必须编写所有的验证规则
不幸的是,我不得不创建一个名为IValidateable的接口,它扩展了INotifyDataErrorInfo,我在其中定义了一个方法Validate,我可以将属性名称传递给或留空以验证整个对象。
INotifyDataErrorInfo是一个。net接口,允许异步验证,并且已经有一个属性HasErrors,用于在验证后检查对象。
然后我在一个基类中实现了所有需要的方法,当我需要验证整个对象时,这个基类使用反射列出属性,然后验证每个属性。
在基类中,我有一个像这样的虚方法:
protected virtual void PerformValidation (String Property) {}
我的模型覆盖此方法并执行所需的特定验证。这个方法不需要重写,正如我所说,你可以在基类中添加对属性的支持。
如果你不需要异步验证,你可以扩展IDataErrorInfo而不是INotifyDataErrorInfo。
然后我可以这样做:
SomeModel.Validate ();
if (SomeModel.HasErrors)
Do Something...
或:
if (!SomeModel.Validate ())
Do Something...