我有一个转发器控件,可以为我的用户显示播放列表,此控件有时可以容纳1000首或更多的歌曲。这是一个很棒的功能,我之前使用jQuery进行客户端排序,但这有局限性。所以我实现了服务器端排序,效果很好,我看到的唯一问题是,当播放列表这么长时,它需要一秒或2才能在回发和排序实际开始之前。
我已经观察了萤火虫中的行为,并做了一些研究,并了解数据绑定值不会被保留,这样就可以了。我的问题是,在Firebug中观看时,看起来转发器控件会在开始回发之前删除集合中的所有项目吗?这是真的让其他人经历过这个吗?
答案 0 :(得分:1)
转发器控件在回发之间完全不存在。当您发出页面请求时,会调用转发器控件。它被填充等,然后呈现给浏览器。完成后,ASP.NET将删除页面上的所有对象(或者垃圾收集器将在需要时获取它们。无论哪种方式,您都无法再获取它们。)
当回发发生时,它必须重新创建整个转发器。有一些机制,比如viewstate,试图使它尽可能无缝(即重新创建控件就像你在前一个请求中一样离开它们),但它们有时不会按照你预期的方式工作。