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