如何在不使用viewstate的情况下在asp.net中创建webforms

时间:2012-02-03 18:05:49

标签: asp.net viewstate

我需要建立一个大型网站,但是当在asp.net中使用网络表单时,我们有viewstate问题。由于viewstate使网站非常繁重。 我们有任何替代方案,我不想使用mvc。

4 个答案:

答案 0 :(得分:1)

可以使用Web应用程序,页面或Web控件级别的EnableViewState =“false”(或ViewStateMode =“disabled”)属性禁用ViewState,并且视图状态数据不会存储在HTML中。

您可以将数据保存在Session(每个用户唯一)或Cache(所有用户都相同)

希望这有帮助!

修改

将数据保存到会话中:

Session["YourKeyName"] = "Object data";

从会话中获取保存的数据:

object o = Session["YourKeyName"] as object; // Where object can be any type

将数据保存到缓存中:

Cache["YourAnotherKeyName"] = "Object data";

从缓存中获取保存的数据:

object o = Cache["YourAnotherKeyName"] as object; // Where object can be any type

答案 1 :(得分:1)

这里有几个“修复”。

  1. 在会话中存储viewstate。就个人而言,我不喜欢这样,但这主要是因为我不喜欢使用会话。

  2. 在多个隐藏的表单字段中拆分视图状态。开箱即用,它存储在一个巨大的领域。这可以通过将maxPageStateFieldLength设置为像1024这样合理的内容来在web.config中处理。

  3. 浏览您的网页并修复那些在viewstate上很重的内容。最大的违法者是网格和其他重复视图,特别是如果您使用内置的分页功能。基本上,摆脱各种标准.net控件,并用不尝试将整个数据集发送到客户端的控件替换它们。

  4. 完全禁用viewstate。虽然我喜欢这个,但它通常不可能实现。特别是如果你使用绝对依赖它的控件(比如内置分页的网格......)。

  5. 最快的“修复”是上面的第2个。这将允许您解决某些Safari版本的问题。从本质上讲,您最大的问题是各种浏览器对单个表单字段中显示的数据量有限制。

答案 2 :(得分:0)

要快速修复,您可以非常轻松地将视图状态存储在会话中。关于这个主题的文章有数百篇。

但从长远来看,了解如何更有效地使用视图状态对您有利。

答案 3 :(得分:0)

如果您不想使用ViewState但希望保留控件的状态,则可以在每次发布到服务器后使用Session或手动为控件分配值。您可以随时为较重的控件禁用ViewState,并为最不重的控件启用它。

祝你好运!