viewstate在数据库中?方便吗?

时间:2011-05-05 14:42:40

标签: c# asp.net database viewstate

我有一个asp.net页面,里面有一个multiview控件。在控件中有许多文本框,选择和动态创建的表。因此,我相信我必须在每个回发上使用viewstate。但是,我担心页面大小会增加并且会减慢重新加载时间。所以,我正在考虑将viewstate移动到数据库中。方便吗?还是有其他方法可以解决这个问题。

提前致谢

2 个答案:

答案 0 :(得分:1)

对于您所描述的页面,您需要问自己一些事情。

首先,您需要保存所有控件的状态吗?可能不是。对于控件,您不需要记住状态,关闭视图状态。

其次,你真的需要这么多的帖子吗?你能不能写一个ajax调用,不会用回发来吹走页面?这样做有助于改善用户体验并减少视图状态中所需的元素数量。

第三,对于动态创建的控件,您无论如何都需要自己管理对象,这样您也可以为它们关闭视图状态。

要回答您的实际问题,不要将您的视图状态存储在数据库中不是一个好主意。这将减慢您的页面速度,并将使事情变得极为复杂。如果您的页面上有两个人,那么您如何确保没有交叉污染?有多少人会点击这个页面?你会把那个表索引一下以防止它变得愚蠢缓慢?见......复杂了。

在前进之前,我会坐下来思考这个页面的设计。如果它是一个臃肿的抓住所有页面,也许你需要创造性地实现它如何为用户提供良好的体验。

答案 1 :(得分:0)

首先,viewstate是旧技术,但是如果你必须使用“经典”ASP.NET方法,那么你回答的是尝试关闭不需要持久化状态的控件的viewstate,这样你就是标签控件如果你有这样的选择,应该发短信,然后将其移动到状态服务器。

如果您继续优化,请查看MVC3 http://www.asp.net/mvc + JQuery + Ajax。大型项目是通过这样的技术完成的,例如就是这个网站。 :):)