我在C#中继承了文本框和下拉列表控件,并为它们添加了一些自定义逻辑,用于设置背景和所有C# 我将它们添加到我的用户控件(ascx)并在aspx页面中使用此usercontrol。但是在回发中我丢失了所有文本框下拉列表的值等。 任何人都可以提供帮助。
答案 0 :(得分:2)
这就是它的工作方式,而且比你想象的要糟糕。并不是说你的控制权正在丢失它的数据。它不再是控件的相同实例。
在ASP.Net中,您可以在每次回发时使用页面类的完全新实例,包括类中的任何控件。在您能够做很多事情之前,您需要了解page lifecycle,但总结如下:
如果用户执行任何导致回发的操作,整个进程将再次启动。它是一个全新的http请求,一个全新的页面类,以及一个全新的http响应。重复调用页面的Load方法等事情。还要注意步骤4和5的顺序。由于浏览器和Web服务器之间的延迟,在响应甚至到达用户之前页面类已经被销毁是很常见的。当用户看到页面时,生成页面的类实例已经很久了。
要解决这个问题,您需要将应该在请求中保留的数据放入实际存在的存储位置,例如ViewState或Session。