当我不使用像DataForm和DataGrid这样的数据控件时,我的实体上的[Required],[StringLength]等属性是否有用?这些可以用于上述数据控件之外的验证吗?
如果是这样,你能指点我一些例子或文件。如果有任何验证错误,我想阻止用户按OK按钮,并希望避免从设置者抛出异常(可能吗?)。
答案 0 :(得分:1)
是的,这些可以在不使用UI控件的情况下用于验证。 Brad Abrams有blog post详细介绍了如何将这些属性用于数据表单,但您似乎应该能够将其帖子的UI部分与核心验证逻辑分开。
从帖子中,这是一个手动添加验证逻辑的示例属性。
[DataMember()]
[Key()]
[ReadOnly(true)]
public int EmployeeID
{
get
{
return this._employeeID;
}
set
{
if ((this._employeeID != value))
{
ValidationContext context = new ValidationContext(
this, null, null);
context.MemberName = "EmployeeID";
Validator.ValidateProperty(value, context);
this._employeeID = value;
this.OnPropertyChanged("EmployeeID");
}
}
}