如何将_dynamicMaterials设为空或清除视图状态?
当用户点击提交时,我想重置容器,以便所有文本框都为空。
我有什么想法可以解决这个问题吗?
private materials[] _dynamicMaterials; // Container for dynamically added UserControl "materials.ascx"
protected void Page_PreInit(object sender, EventArgs e)
{
GetPostBackControl(Page);
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
if (!this.DesignMode)
{
int count = MySession.Current.UserControlCount;
_dynamicMaterials = new materials[count];
for (int i = 0; i < count; i += 1)
{
Control newcont = LoadControl("materials.ascx");
newcont.ID = "materialControl" + i.ToString();
myPlaceHolder1.Controls.Add(newcont);
_dynamicMaterials[i] = (materials)newcont;
}
}
}
答案 0 :(得分:0)
目前尚不清楚您是否需要跟踪该容器的ViewState,但假设您没有最简单的解决方案,那就是在容器上将EnableViewState
设置为false:
<asp:Panel ID="pnlContent" runat="server" EnableViewState="false">
<!-- your controls here -->
</asp:Panel>
如果您确实需要ViewState,并且只想在提交时将其清除,则可以像其他人在评论中建议的那样致电ViewState.Clear()
。
最后,您还可以在提交时以编程方式清除字段:
pnlContent.Controls.OfType<TextBox>().ToList().ForEach(t => t.Text = string.Empty);