2011-02-09 10 views
0

プロジェクトでは、フォーム要素のカスタムWebUserControl(標準のバリデータやその他のシステム固有の関数をカプセル化しています)があります。私のユーザコントロールは "DropDownListField"と "TextBoxField"です。何らかの理由で、私は、コードをステップ実行して見ても、文は常にfalseを返し、「場合」「コントロール」を割り当てなっていることを私のWebユーザーコントロールのWebUserControlを使用したC#ASP.NET GetType()Webサービスの問題

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; 
} 

:ページの背後にあるコードでは、私はこのコードを持っています。このコードは、プロジェクト内の別の場所にありますが、他の場所では標準の.netコントロール "TextBox"と "DropDownList"が使用され、他の場所ではコードが機能します。

これはWebユーザーコントロールではうまくいかない理由は誰にも分かりますか?

UPDATE: うーんので、デバッグで、私はこれを見つけた:

?control.GetType(); 
BaseType: {Name = "DropDownListField" FullName = "WebUI.UserControls.Fields.DropDownListField"} 
?typeof(DropDownListField); 
BaseType: {Name = "UserControl" FullName = "System.Web.UI.UserControl"} 

だからtypeof演算だけで、彼らは、ユーザーがそれはそう完全なタイプではない制御されている認識しています。

誰かが特定のユーザーコントロールの種類を確認する方法を知っていますか?

+1

私は実際の型を調べるために、デバッグを使用し、それらが同じタイプではありません推測しています。 –

+0

@steven更新を参照してください。 – William

答えて

3

私はそれらが同じタイプでないと推測しています。実際のタイプを見つけるためにデバッグを使用します。

また、代わりに 'is'というキーワードを使用してください。

+0

"コントロールはDropDownListFieldです"が機能します。ありがとうございました。そのチェックとタイプチェックとの違いを知っていますか? – William

+0

'は型の互換性をチェックし、' == 'は実際の型(型のインスタンスで定義されたもの)を比較します –

2

PS:(コントロールがDropDownListFieldである)場合は、ビューが直接コントロールに子が含まれている場合、私は覚えていません

を言うことはきれいかもしれませんが、コントロールはのみ含まれている場合、私は驚かないだろう1つの要素は、ある種のコンテナになります。したがって、あなたのコントロールはControls [0] .Controlsにある可能性があります。子を再帰的に見つけ出すメソッドを作成することをお勧めします。

実際には、あなたのコントロールはすべて共通のインタフェース(:

interface ICustomFieldWithValue { string Value {get; set; }} 

例)を実装する必要があります。あなたの結果のコードはもっときれいになります。

+0

"Is"が正常に機能しました。 FYIそのコードをステップ実行するときコントロールは、カップルのリテラルとカスタムコントロールを通過するので、ビューにはコレクションのすべてのコントロールが含まれている必要があります。 – William

1

c2.GetType()。ToStringメソッド()== "System.Web.UI.WebControls.Label"

+0

投稿は –

+0

の質問には答えられないようですので、http://stackoverflow.com/tourを確認してください。 – GlennG

関連する問題