【问题标题】:viewstate in database? is it convenient?数据库中的视图状态?方便吗?
【发布时间】:2011-05-05 14:42:39
【问题描述】:

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

提前致谢

【问题讨论】:

  • 您认为将其存储在数据库中会如何缩短加载时间?您仍然需要传输信息,现在您已经增加了访问数据库的开销。
  • 要加快速度,请执行此操作 EnableViewState="false" :)
  • 很好的链接@Muhammad。如果您检查链接@Anna,您会发现有更方便的方法来使用常规视图状态:) 顺便说一句,@Jack,因为我必须存储文本框值和其他东西,我想不出另一种方法来存储它们并在其中检索回发。

标签: c# asp.net database viewstate


【解决方案1】:

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

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

第二,你真的需要这么多回帖吗?您能否改为编写一个不会通过回发吹走页面的 ajax 调用?这样做将有助于改善您的用户体验并减少视图状态中所需的元素数量。

第三,对于动态创建的控件,无论如何您都需要自己管理对象,因此您不妨为它们关闭视图状态。

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

在继续之前,我会坐下来考虑一下这个页面的设计。如果它是一个臃肿的包罗万象的页面,也许您需要在如何实现它方面发挥创意,以便为您的用户提供良好的体验。

【讨论】:

  • 你说得对,我确实会使用 Ajax 和 javascript。但这是第二步,首先我想创建一个完全没有 javascript 的页面。然后我将实现客户端脚本。原因 1:我想在 c# 和 asp.net 中学习一些东西,因为我是这方面的新手。原因 2:我希望它在我的手机上工作,这是一个不包含 javascript 的黑莓手机 :) 感谢您的回答。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    相关资源
    最近更新 更多