|
|
1
2
动态添加的控件不会持久存在于viewstate中,这就是为什么使用AJAX或iframe或其他什么都没关系的原因。 一种可能的解决方法是在回发时重新填充控件。这样的问题是,页面生命周期(简化)是:
这意味着唯一可以重新添加动态控件的地方是Initialize,否则发布的数据(或视图状态信息)将不会加载到该控件中。但通常,由于Initialize中还没有Viewstat/回发数据,您的代码没有所需的信息来确定需要添加哪些控件。 在这种情况下,我发现的唯一其他解决方法是使用名为 DynamicControlsPlaceholder 这工作得很好,并将控制信息持久化在视图状态中。 在你的特定情况下,似乎没有那么多选择/案例。在页面中包含所有不同的控件集,并将它们放在asp:placeholder控件中,然后根据所选内容将其中一个设置为可见,这可行吗? |
|
|
2
1
其他一些选择:
|
|
|
3
1
你有很多不同的选择,是的,IFrames是一个糟糕的设计选择。 第一种选择是AJAX解决方案。有了这个,就没有真正的视图状态场景了,你只是在与Web服务器来回传递数据,根据需要动态构建UI。 下一个选项是每次动态添加给定帖子所需的控件。其工作方式是,在页面生命周期的开始,您需要完全按照上次发送的方式重建页面,然后丢弃所有不需要的控件,只构建那些需要的控件。 第三种选择是使用母版页。您的顶级内容可能位于母版页本身,并链接到网站内的各个页面。 我相信,如果时间足够,我可以想出更多,但这3个问题只是从阅读你的问题中出现的。 |
|
|
4
1
如上所述,动态控件和视图状态不能很好地混合在一起,但这是一件好事,因为即使它们这样做,复杂动态页面的视图状态也会变得如此臃肿,以至于性能会降至零 使用Ajax(我喜欢Ajax PRO,因为它使用起来非常简单)并自己管理页面状态(在会话、数据库表或适用于您场景的任何东西中)。这将有点复杂,但结果将是高效和响应的:每个页面只能更新需要更改的内容,而且你不会一直来回播放一个巨大的视图状态字符串 |
|
|
James Williams · 如何在单击按钮时刷新div内容 3 年前 |
|
|
Mehmet · javascript执行了多个 3 年前 |
|
|
Shijil · 尝试在Jquery PHP搜索代码中添加选择标记功能 4 年前 |
|
|
Parker · 如何使表格行的单元格项加粗n秒? 4 年前 |
|
|
Chris J. · ajax获取查找数据属性值的请求 4 年前 |
|
|
Pedro F · Ajax调用后脚本运行不正常 4 年前 |