プロジェクトには、フォーム要素用のカスタムWebUserControlがいくつかあります(これらは、いくつかの標準バリデーターやその他のシステム固有の関数をカプセル化します)。私のユーザーコントロールは「DropDownListField」と「TextBoxField」です。ページの後ろのコードには、次のコードがあります。
string parameterValue = null;
foreach (object control in myMultiView.Views[myMultiView.ActiveViewIndex].Controls)
{
if (control.GetType() == typeof(DropDownListField))
parameterValue = ((DropDownListField)control).Value;
if (control.GetType() == typeof(TextBoxField))
parameterValue = ((TextBoxField)control).Value;
}
何らかの理由で、コードをステップ実行して「control」にWebユーザーコントロールが割り当てられていることを確認しても、「if」ステートメントは常にfalseを返します。このコードは、プロジェクト内の別の場所にありますが、他の場所では標準の.netコントロール「TextBox」と「DropDownList」が使用され、他の場所ではコードが機能します。
これがWebユーザーコントロールで機能しない理由を誰かが知っていますか?
更新:うーん、デバッグで私はこれを見つけました:
?control.GetType();
BaseType: {Name = "DropDownListField" FullName = "WebUI.UserControls.Fields.DropDownListField"}
?typeof(DropDownListField);
BaseType: {Name = "UserControl" FullName = "System.Web.UI.UserControl"}
したがって、typeofは、それらが完全なタイプではなく、ユーザーコントロールであることを認識しているだけです。
特定のユーザーコントロールタイプを確認する方法を知っている人はいますか?