在我的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
用于测试目的的选择,但有趣的是它会记住我的选择。
我能做些什么来解决这个问题?