ViewStateを有効にしているASP.NETアプリケーションでは、再度設定するだけで入力をリセットできます。ViewStateは、動的に追加されたUserControl(プレースホルダ内)の変更をPostBackに上書きします。
ddl
が "A" にバインドされます。この例では
<asp:ScriptManager runat="server" />
<asp:DropDownList ID="ddl" runat="server" DataSource='<%# new string[] { "A", "B", "C" } %>' />
<asp:Button ID="b" runat="server" UseSubmitBehavior="false" OnClick="b_Click" Text="Test 1" />
_TEST.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
this.DataBind();
this.ddl.SelectedValue = "B";
}
protected void b_Click(object sender, EventArgs e)
{
Console.WriteLine("Updated");
}
は_TEST.aspx:ここで働く基本的な簡単なサンプルです、 "B"、 "C"はPage_Load
であり、常に "B"が選択されます。したがって、選択を変更して送信すると、リセットされます。特定の条件でいくつかのコントロールをリセットするために使用されるとします。
は、私の場合は、Placeholder
に追加された動的にロードされたUserControl
に行動のこの種を必要とします。 Placeholder
はコンテンツを保持しないため、すべてのポストバックでコントロールを再作成する必要があります。 ViewState
は大丈夫です。ここではサンプルです:
_TEST.aspx
<asp:ScriptManager runat="server" />
<asp:PlaceHolder ID="ph" runat="server" />
_TEST.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
_TESTUC uc = (_TESTUC)this.Page.LoadControl("~/Controls/_TESTUC.ascx");
this.ph.Controls.Add(uc);
}
_TESTUC.ascx
<asp:DropDownList ID="ddl" runat="server" DataSource='<%# new string[] { "A", "B", "C" } %>' />
<asp:Button ID="b" runat="server" UseSubmitBehavior="false" OnClick="b_Click" Text="Test 2" />
_TESTUC.ascx.cs
protected void Page_Load(object sender, EventArgs e)
{
this.DataBind();
this.ddl.SelectedValue = "B";
}
protected void b_Click(object sender, EventArgs e)
{
Console.WriteLine("Updated");
}
は再び、すべてのポストバックで、私はテスト目的のためにDropDownList
の選択をリセットしたいのですが、興味深いことに、それは私の選択を記憶しています。
私はこれを修正するために何ができますか?