質問

私は、Page_Loadイベントでの一連の制御をロードしています。しかし、私はこれらのコントロールに手段が別の場所にデータを格納し、各ページの負荷を、再作成する必要があります。これは面倒です。

protected void Page_Load(object sender, EventArgs e)
{
   MyControl control = (MyControl)LoadControl(...);
   control.Initialize(GlobalClass.controlData);
   //^gives the control the data it had previously.  
   //Or use ViewState["controlData"] if serializable.
   Controls.Add(control);
}
私はif (!IsPostBack) {}を使用する必要がありますように

私が感じるが、私はどのように、または理由を知りません。

私はマークアップにコントロールを配置する場合、

これとは対照的に、そしてコントロールが永続的に滞在しているようです。例えば、中ボタンマークがアップ(と思う?)そのTextプロパティの変更を覚えています。

<asp:Button ID="buttonText" runat="server" 
            Text="Text Segment" onclick="buttonText_Click" />

はどのようにマークアップを経由して追加したコントロールのように、動的に追加したコントロールと持続性のいくつかの並べ替えを維持するのですか?これは私に多くの仕事と不満を救うます。

感謝します。

(私は小さな永遠にコード化されてきたが、より多くの私はASP.NETを行い、より多くの私はなって混乱。私は仕事:-Pに学習理解どのように何の正反対であるどちら。)

役に立ちましたか?

解決

あなたはPage_Initイベント中にそれらをロードする場合、動的にロードされたコントロールの場合、あなたはその後、ViewStateのにそれらを追加することができ、彼らはポストバックからのポストバックの状態を保持することができるようになります。

他のヒント

私はあなたのポイントを理解しています。はい、これは面倒ですが、それはどのようにステートレス技術の作品です。

静的コントロール(あなたがHTMLマークアップに置くことをするもの)の同じbahaviourを達成する方法はありません。

私はこの答えに与えたヒントに従ってます:

アクセスコントロールを動的に作成(C#)とする

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top