用户控件如何在POSTBACK后,保持自身的状态
我尝试用viewstate来保存,但是其中一些属性未被序列化,所以还是不能完全保存状态。
有没有其他方法,请详细告知,谢谢。。
POSTBACK后,保持自身的状态:
1.使用viewstate即可,不知道你为什么说不可以?
2.session,cache都没有必要!
Demo
public void page_load()
{
if(!ispostback)
{
ViewState.add(XX,XX);
}
}
public void button_click()
{
object obj = viewstate["xxx"];
}
补充:这样也好解决,如果可以用Ajax,把控件放在updatePanel中,updateModel调整为自定义,这时在postback时,控件还是保持自身的状态的。
或者可以自己写一个CachePanel,用于保持控件自身的状态。
好像园子中有人写过CachePanel的。
POSTBACK之后不要刷新页面就没问题了吧
页面初始化放到
if (!Page.IsPostBack)
{
}
里面去
先说一下:
---------------------------
ASPX POSTBACK后
ASCX 将会重新加载,这时原来的ASCX会彻底消失。
---------------------------
这段话有问题,ascx还是在控件树上的,怎么会消失呢,ascx的viewstate也会重新加载的,即使是动态加载也该如此的。
试试把你ASCX中的类序列化[serializable]