我编写了用户控件InputDetails,里面有几个文本框和几个单选框。
我在Page_Load:
期间动态添加它if(!Page.IsPostBack()){
InputDetails input = (InputDetails)Page.LoadControl("InputDetails.ascx");
PlaceHolder1.Controls.Add(input);
}
但是当我刷新页面时,控件就消失了,所以我问,如何在视图状态中保存用户控件已经添加它,所以下次自动重新加载它。更好的是,当页面回发时,如何读取用户控件文本框中的值?我需要能够在一个页面上添加多个InputDetails,因此保存它会很有用。
答案 0 :(得分:2)
如果动态地向页面添加控件,则必须在每次回发后重新创建它。 尝试删除 if(Page.IsPostBack())行并检查它是否有效:)。 对于您创建的每个控件,您还应该在每次创建时设置相同的ID值。 如果没有其他问题,ViewState应该能够跨回发保存控件的状态。
为了阅读这些值,你可以:
答案 1 :(得分:0)
您也可以使用AJAX动态加载用户控件/服务器控件,viewstate需要控件ID才能正确存储视图状态。
请您浏览more info
的链接