【发布时间】:2012-11-29 04:02:03
【问题描述】:
我正在尝试开发一个页面。 有一个按钮和一个占位符。 单击按钮时,用户控件将添加到占位符中。
在每次单击按钮时,应将许多用户控件添加到占位符。
我正在尝试在 preinit 事件的视图状态中存储占位符,但是在加载事件视图状态中从视图状态中检索占位符时仍然为空。
下面是我的代码:
protected void PreInit(object sender, EventArgs e)
{
this.OnPreInit(e);
if (!Page.IsPostBack)
{
ViewState["c"] = PlaceHolder1;
}
else { PlaceHolder1 = (PlaceHolder)ViewState["c"]; }
}
protected void Page_Load(object sender, EventArgs e)
{
if(IsPostBack)
{ PlaceHolder1= (PlaceHolder)ViewState["c"]; }
}
public void addDepartmentBtn_Click(object sender, EventArgs e)
{
// User Control Code
c1 = LoadControl("~/AddDepartment.ascx");
PlaceHolder1.Controls.Add(c1);
}
如果视图状态不适合这种情况,那么实现此目的的替代方法是什么?
【问题讨论】:
-
存储在ViewState中是指占位符内的控件?
-
标记中是否存在 PlaceHolder1 控件?
-
@ System Down:在第一个按钮单击时,我的用户控件位于占位符内。现在我想在视图状态中存储占位符。在接下来的后续按钮单击中,当新的用户控件添加到占位符时,应从视图状态中检索占位符。
-
@Igor:是的,它在标记中
-
在 ViewState 中存储占位符不是一个好习惯。无论如何,您的要求是什么?