验证何时为自定义控件设置属性

时间:2012-08-14 19:28:14

标签: asp.net page-lifecycle

我希望有一种模式可以验证在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);
        }
    }

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

0 个答案:

没有答案