代码之家  ›  专栏  ›  技术社区  ›  DaveB

Silverlight和DataAnnotations

  •  2
  • DaveB  · 技术社区  · 15 年前

    当我不使用DataForm和DataGrid这样的数据控件时,我的实体上的[必需]、[字符串长度]等属性是否有任何用途?这些是否可用于上述数据控制之外的验证?

    如果是的话,你能给我举些例子或文档吗?如果有任何验证错误,我希望防止用户按下OK按钮,并且希望避免从设置器抛出异常(可能吗?).

    1 回复  |  直到 15 年前
        1
  •  1
  •   Brad Tutterow    15 年前

    是的,这些可以在不使用UI控件的情况下用于验证。布拉德·艾布拉姆斯有一个 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");
            }
        }
    }