1

我希望有一种模式可以验证何时为 asp.net 中的自定义控件设置了属性。

考虑到存在页面生命周期,我们不断遇到控件可能进入无效状态的问题。我们能做的最好的事情是引发异常,并提供一条说明性消息,例如在添加数据之前设置选择的值。

请注意,理想情况下,组件不会依赖于设置属性时的排序等内容。不幸的是,我只能一步一步地推动公司采取更好的做法。有太多的组件要从头开始重写,这是一个不切实际的期望。

也就是说,这里有一个例子。

我们有两个属性。SelectedValues 将设置与逗号分隔列表匹配的值,而 InsertAll 将在列表顶部插入“All”。

潜在问题:开发人员在 Page 的 PreInit 事件中设置 SelectedValues,但 InsertAll 属性如果为 true,将添加“All”值并在控件的 Init 事件期间选择它。诀窍是,SelectedValues 将在设置时直接设置值,而不是在生命周期的后期。这意味着,当他们看到页面时,他们认为组件中存在错误,因为他们没有将 All 设置为选中,但确实如此。

页:

protected override void OnPreInit(EventArgs e)
{
    base.OnPreInit(e);
    listBoxSelection.SelectedValues = "value1,value2";
    listBoxSelection.InsertAll = true;
}

控制:

    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);

        if (this.InsertAll)
        {
            ListBoxItem allItem = new ListBoxItem()
                                  {
                                      Text = "All",
                                      Value = "0"
                                      Selected = true
                                  };

            this.Items.Insert(0, allItem);
        }
    }

我如何确保开发人员知道他们在使用此控件时犯了错误?这是一个简单的例子,但我经常以多种形式看到它。

4

0 回答 0