2 つのユーザー コントロールがあり、そのうちの 1 つにテキスト ボックスがあります。同じページに登録されている 2 番目のユーザー コントロールからその値を取得する必要があります。これどうやってするの?次の行が間違っていることは知っていますが、そのようなものだったことを思い出します。
TextBox myText = (TextBox)FindControl["mycontrol"] as TextBox;
2 つのユーザー コントロールがあり、そのうちの 1 つにテキスト ボックスがあります。同じページに登録されている 2 番目のユーザー コントロールからその値を取得する必要があります。これどうやってするの?次の行が間違っていることは知っていますが、そのようなものだったことを思い出します。
TextBox myText = (TextBox)FindControl["mycontrol"] as TextBox;
最初のコントロールから 2 番目のコントロールの値にアクセスする必要がある場合
var textBox = this.Page.FindControl("SecondUserControl")
.FindControl("tbCardNumber") as TextBox;
SecondUserControlはページで指定された ID であり、tbCardNumberは2 番目のコントロールの TextBox に指定された ID です。
ページから TextBox にアクセスしようとすると
var textBox = SecondUserControl1.FindControl("SecondUserControl")
.FindControl("tbCardNumber") as TextBox;
SecondUserControl1はコントロールの ID であり、分離コードでアクセスできます。
ただし、プロパティを介してテキスト ボックスの値を公開できます。
public string TextBoxValue
{
get
{
return tbCardNumber.Text;
}
}
ただし、別のユーザー コントロールを介してアクセスする場合は、FindControl メソッドが必要です。
キャストが多すぎることを除いて、コードは機能するはずです
TextBox myText = FindControl["mycontrol"] as TextBox;
TextboxControl
の基本クラスであるを返すFindControl に関する MSDN ドキュメント、したがって、このキャストは、見つかったコントロールがテキストボックスである限り機能するはずです