我需要建立一个大型网站,但是当在asp.net中使用网络表单时,我们有viewstate问题。由于viewstate使网站非常繁重。 我们有任何替代方案,我不想使用mvc。
答案 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)
这里有几个“修复”。
在会话中存储viewstate。就个人而言,我不喜欢这样,但这主要是因为我不喜欢使用会话。
在多个隐藏的表单字段中拆分视图状态。开箱即用,它存储在一个巨大的领域。这可以通过将maxPageStateFieldLength设置为像1024这样合理的内容来在web.config中处理。
浏览您的网页并修复那些在viewstate上很重的内容。最大的违法者是网格和其他重复视图,特别是如果您使用内置的分页功能。基本上,摆脱各种标准.net控件,并用不尝试将整个数据集发送到客户端的控件替换它们。
完全禁用viewstate。虽然我喜欢这个,但它通常不可能实现。特别是如果你使用绝对依赖它的控件(比如内置分页的网格......)。
最快的“修复”是上面的第2个。这将允许您解决某些Safari版本的问题。从本质上讲,您最大的问题是各种浏览器对单个表单字段中显示的数据量有限制。
答案 2 :(得分:0)
要快速修复,您可以非常轻松地将视图状态存储在会话中。关于这个主题的文章有数百篇。
但从长远来看,了解如何更有效地使用视图状态对您有利。
答案 3 :(得分:0)
如果您不想使用ViewState但希望保留控件的状态,则可以在每次发布到服务器后使用Session或手动为控件分配值。您可以随时为较重的控件禁用ViewState,并为最不重的控件启用它。
祝你好运!