动态控制状态管理 - 查看状态与数据库

时间:2009-12-28 15:14:42

标签: c# .net asp.net viewstate dynamic-controls

存储与动态控件相关的数据的最佳选项是什么。这是我的情景。

  1. 随时可以从5到15个主表中进行检索。
  2. 动态控件可以是TextBox,DropDownList,ListBox,GridView。
  3. Master不会在回发时更改,但是页面会在同一个会话中产生很多回发。
  4. 我正在使用带有.NET 2.0的SQLServer 2005
  5. 作为更有经验的用户,您是建议从数据库中填充这些控件中的项目还是允许每个控件的视图状态来维护项目列表?我从更快的性能角度来看这个。另外,您能否提供您的建议理由。

    欢迎任何其他建议。请告诉我,如果您需要更多信息。

    由于 - 拉贾

2 个答案:

答案 0 :(得分:1)

这取决于。正如Aaron所提到的,您在viewstate中存储的所有内容都必须从客户端上传回服务器。对于int er 网站,这通常会使viewstate成为存储表格数据的极其糟糕的地方。对于一个int ra 网站,客户端可能拥有100Mbs的上传带宽并不是什么大不了的事,而Viewstate可能是一个更好的地方;如果重建此数据的数据库查询很昂贵,则尤其如此。

也就是说,许多内部网站最终被移植到支持家庭工作人员并突然发现自己在互联网上工作,所以你可能仍然想要保持类似互联网的性能限制。在这种情况下,如果您的数据库查询最终成为瓶颈,您可能会考虑索引/物化视图或甚至单独的表,您可以在其中临时插入此数据以便快速检索以帮助加快速度。

答案 1 :(得分:0)

在你的情况下,我肯定会在数据库中找到数据,而不是在ViewState中存储任何表格数据。存储在ViewState中的所有内容都会在每次回发时从客户端发送回服务器。它未加密,使用,重新加密,然后发回,这比查询数据库要昂贵得多。

像id这样的小东西和什么都不适合存储在ViewState中,但不是整个数据表。