Silverlight和DataAnnotations

时间:2009-08-26 16:32:08

标签: silverlight silverlight-3.0

当我不使用像DataForm和DataGrid这样的数据控件时,我的实体上的[Required],[StringLength]等属性是否有用?这些可以用于上述数据控件之外的验证吗?

如果是这样,你能指点我一些例子或文件。如果有任何验证错误,我想阻止用户按OK按钮,并希望避免从设置者抛出异常(可能吗?)。

1 个答案:

答案 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");
        }
    }
}