在我的ASP.NET應用程序中 - 啓用了ViewState - 我可以通過簡單地設置它們來重置輸入。這裏是工作的基本簡單的示例:ViewState覆蓋在PostBack上動態添加UserControl(在Placeholder中)的更改
_TEST.aspx
<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");
}
在這個例子中ddl
將與 「A」 的約束,Page_Load
上的「B」和「C」,它將始終選擇「B」。所以當你改變選擇並提交時,它將被重置。想象一下,這用於重置特定條件下的某些控件。
在我來說,我需要這種行爲對動態加載UserControl
被添加到一個Placeholder
。因爲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
用於測試目的的選擇,但有趣的是它會記住我的選擇。
我能做些什麼來解決這個問題?