ページ内の複数のレベルにネストされた asp.net コントロールに、カスタム バリデータからアクセスするにはどうすればよいですか?
具体的には、別のプレースホルダーの内側にある別のリピーターの内側にあるリピーターの内側にあるプレースホルダーの内側にあるドロップダウンリストを生成しています。
互いに比較するために、すべてのドロップダウン ボックスの選択された値にアクセスする必要があります。
私の現在の解決策は、ドロップダウンリストにアクセスするのに十分深くなるまで、各コントロール内のすべてのコントロールをループすることです:
For Each g As Control In sender.Parent.Controls
If g.GetType().ToString.Equals("System.Web.UI.WebControls.Repeater") Then
For Each k As Control In g.Controls
If k.GetType().ToString.Equals("System.Web.UI.WebControls.RepeaterItem") Then
For Each l As Control In k.Controls
If l.GetType().ToString.Equals("System.Web.UI.WebControls.Repeater") Then
For Each p As Control In l.Controls
If p.GetType().ToString.Equals("System.Web.UI.WebControls.RepeaterItem") Then
For Each n As Control In p.Controls
If n.GetType().ToString.Equals("System.Web.UI.WebControls.PlaceHolder") Then
For Each c As Control In n.Controls
If c.GetType().ToString.Equals("System.Web.UI.WebControls.DropDownList") Then
'Add the dropdownlist to an array so that I can use it after all drop down lists have been added for validation.
これはリソースの無駄遣いのように思えます。カスタム バリデータからこれらのコントロールにアクセスするより良い方法はありますか?