asp.net でカスタム コントロールのプロパティが設定されていることを確認するためのパターンがあることを願っています。
ページのライフ サイクルがあることを考慮すると、コントロールが無効な状態になる可能性があるという問題が引き続き発生します。私たちができる最善のことは、データを追加する前に選択した値を設定するなどの指示メッセージで例外を発生させることです。
理想的には、コンポーネントは、プロパティが設定されているときの順序などに依存しないことに注意してください。残念ながら、私が会社をより良い慣行に移行させることができるのは、一度に 1 段階だけです。最初から書き直すにはコンポーネントが多すぎて、現実的ではありません。
とは言っても、ここに例があります。
2 つのプロパティがあります。コンマ区切りのリストに一致する値を設定する SelectedValues と、リストの先頭に「すべて」を挿入する InsertAll。
潜在的な問題: 開発者は Page の PreInit イベントで SelectedValues を設定しますが、InsertAll プロパティが true の場合、コントロールの Init イベント中に「All」値を追加して選択します。秘訣は、SelectedValues が設定時に値を直接設定することです。後でライフ サイクル中に設定することはありません。つまり、ページを見ると、すべてを選択するように設定していないため、コンポーネントにバグがあると考えますが、そうです。
ページ:
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);
}
}
このコントロールを使用するときに開発者が間抜けであることを開発者が認識できるようにするにはどうすればよいですか? これは単純な例ですが、私は常にさまざまな形で見ています。