![]() |
1
10
视情况而定。如果您需要将属性值保留在回发之后,那么您将不得不使用viewstate或session。因为这些控件是在每个回发邮件上重新创建的,所以您不能真正保持这种状态。 |
![]() |
2
8
使用viewstate存储用户控件的属性值完全没有问题。
但是,您的语句“用户控件的属性越多,在视图状态中停留的垃圾就越多”不一定是正确的。当然可以让控件的属性的viewstate跟踪值,但不能将数据存储在
听起来很疯狂,对吧?见 TRULY Understanding ViewState 关于ViewState如何工作的精彩文章。
这取决于在控件的生命周期中何时初始化控件的属性。视图状态将只存储在隐藏的
请参阅相关文章。它讨论的每一件事都非常清楚,比我所能做的更好。 |
![]() |
3
5
您的问题正是ViewState的作用:在回发之间持久化控件的属性,所以您的解决方案很好。 您可以在会话中保存它,但这确实给服务器带来了负担。根据你拥有的用户数量,这会很快变得非常难看。 还请记住,如果您使用会话,则必须进行一些内务管理。例如,如果要在同一页上使用用户控件两次,则需要确保每个控件使用唯一的会话变量。 |
![]() |
4
2
这并不太糟糕——这基本上就是内置控件的工作方式,通常会导致预期的行为。最好的办法是,当您不需要在回发之间持久化这些值时,只选择性地禁用viewstate。 你可能还想看看ControlState——它是一个独立的“包”,人们不能禁用它,它被用于诸如GridView之类的东西,因为它破坏了控件,有些东西无法通过ViewState关闭。 |
![]() |
5
0
你总是可以超越预期
然后根据需要保存和加载:
|
![]() |
6
-1
你试过静态属性吗?另外,请记住,HTTP是无状态的,因此您可以在每个
|
![]() |
Pablo De Luca · 保存表单控件值以供以后使用 7 年前 |
![]() |
Foitn · Winforms禁用数据预览 7 年前 |
![]() |
Sach · 将WPF ScrollViewer内容导出为单独的PNG 7 年前 |