2

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.)

4

2 に答える 2

1

動的に読み込まれたコントロールの場合、Page_Init イベント中にそれらを読み込むと、それらを ViewState に追加でき、PostBack から PostBack まで状態を保持できるようになります。

于 2010-09-01T17:44:57.837 に答える
1

私はあなたの主張を理解しています。はい、これは面倒ですが、これがステートレス テクノロジのしくみです。

静的コントロール (HTML マークアップに入れるもの) と同じ動作を実現する方法はありません。

この回答で提供したヒントに従ってください。

動的に作成されたコントロールへのアクセス (c#)

于 2010-09-01T17:13:06.400 に答える