Shi*_*mmy 3 .net validation wpf data-annotations
我正在使用DataAnnotationsutils 验证一个类.
我有一个Title有财产和Item财产的班级.我想对属性应用a RequiredAttribute,Title但只有当Item属性为null时它才应该无效; 如果Item使用对象设置属性,Title则不需要.
简而言之,我希望RequiredAttribute仅在满足类中的条件时才进行验证.
如何才能做到这一点.
由于我没有找到其他方式,并且因为我通常不经常需要这个功能,所以我决定使用类级验证器进行粗略的处理.我的问题是,有没有办法手动更新UI,使标题文本框具有红框,即使其无效?
更新2
我希望类级验证器在字段上进行汇总.例如,我必须填写Cost和SalesPrice字段,我想确保SalesPrice> Cost并使SalesPrice无效,否则,我不希望在类级别上出现全局验证错误.
我喜欢以xamly的方式做到这一点.
您可以通过为类创建自定义验证属性来完成此操作.遗憾的是,分配给属性的DataAnnotation属性无法访问父类的其他属性,因此我需要创建一个类验证器.
使用System.ComponentModel.DataAnnotations命名空间,您将需要创建继承自ValidationAttribute的自定义属性类并覆盖IsValid方法(我没有测试下面的代码,但它应该让你去):
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
sealed public class CustomAttribute: ValidationAttribute
{
public CustomAttribute()
{
}
public override bool IsValid(object value)
{
if(value is myClass)
{
return ((myClass)value).Item != null &&
string.IsNullOrEmpty(((myClass)value).Title) ? false : true;
}
else return true;
}
}
Run Code Online (Sandbox Code Playgroud)
进一步挖掘看来,虽然交叉现场验证不可能开箱即用,但可以通过扩展框架来支持它.有关详细信息,请参阅此文章,希望这将添加到MVC的未来版本中.
| 归档时间: |
|
| 查看次数: |
3125 次 |
| 最近记录: |