最近考虑将之前用delphi设计的开发框架思路在asp.net上实现,其中有一项功能时动态生成录入界面,这在form开发程序中比较简单只要设置好动态生成的控件的所有者(owner),及位置还有相关事件关联就可以了,但在webform中就不是那么容易了,因为web程序是无状态的,所以动态创建控件的时间(在哪个事件)及初始化就有很多学问了。
第一,首先要明白的是webform是无状态的,每一次的回传,系统就会自动生成一个新的控件,虽然控件id跟原先的一样,但确实不是原先的了。
第二,在asp.net中控件的状态(属性)是通过viewstat来保存的,所以不要在页面中禁用viewstat。
据msdn所述,控件的创建最好是在page_init事件中,而设置控件的属性则最好在page_load中,不过全放在page_load中好像也没什么不可以。关键是不要自以为然的将创建控件的代码放到if(!IsPostBack)中,如不明白,看第一条。

本文探讨了在ASP.NET WebForms中动态生成控件的方法,特别是如何处理无状态环境下控件的状态保存问题,并给出了控件创建的最佳实践。

被折叠的 条评论
为什么被折叠?



