我希望有一种模式可以验证何时为 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);
}
}
我如何确保开发人员知道他们在使用此控件时犯了错误?这是一个简单的例子,但我经常以多种形式看到它。