web-dev-qa-db-ja.com

ページからユーザーコントロールに値を渡す

メインページの2つのラベルに名前と姓を保存しています。クラスにもこれらの値があります(クラスはあまり機能しませんが、将来の拡張に使用しています)。名前と姓を本文としてメールを送信するユーザーコントロールがあります。

私の質問は、ラベルまたはクラス変数の値をユーザーコントロールの本体変数に転送するにはどうすればよいですか?

9
Bhrugesh Patel

渡すデータのデータ型を使用してユーザーコントロールにプロパティを作成し、コントロールの作成時にページに入力します。

public class myUserControl : Control
    {
      ...
      public int myIntProperty {get; set;}
      ...
    }

後でコードビハインドで次のような値を割り当てることができます

myUserControl cntrl = new myUserControl();
    cntrl.myIntProperty = 5;

これの代わりに、次のようにマークアップを介して値を渡すこともできます

<uc1:myUserControl ID="uc1" runat="server" myIntProperty="5" />

コントロールでパブリックプロパティを定義する必要があります。その後、ページでコントロールを使用するときに、それらのパラメーターに値を渡すことができます。

何かのようなもの:

<cc:mycustomControl runat="server" 
    MyProperty1=<%# label1 %>
    MyProperty2=<%# label2 %>
/>
3
Petar Ivanov

これらの値を保持するには、コントロールにプロパティを作成する必要があります。次に、ページコードから、コントロールのプロパティに値を割り当てるだけです。

あなたのコントロールで、あなたは次のようなものを持つことができます

public string FirstName
{
  get {
     if (ViewState["FirstName"] == null)
        return string.Empty;
     return ViewState["FirstName"].ToString();

      }
      set {
           ViewState["FirstName"] = value;
      }
}
2
Icarus

ステップ1:値をプロパティとして転記することができ、それを簡単に利用することができます。

ステップ2:ユーザーコントロールからページにアクセスするには、Parentプロパティを使用するか、カスタムログインして親ページにアクセスし、プロパティ値を使用するコードを記述します。 。

1
Pranay Rana

ユーザーコントロールでこのようなことを行うことができます

string x=((yourparentcontrol)this.parent).label1.text;

文字列xを使用します。

0
ViSu