asp.net使用get维护viewstate

时间:2011-03-11 06:25:30

标签: c# asp.net postback viewstate

在页面重新加载时,我想保留用户在点击提交时键入的值。

我担心视图状态对页面来说很麻烦,无论是带宽还是页面查看器下载页面的时间。我的字节很便宜:p

我的问题是不是使用服务器控件,而是我在页面上的表单做了一个自己和aspx推送

<input type="text" id="user_email" name="email" value="<%=Request.Form["email"] %>" />

这允许我不使用viewstate。以这种方式做事有什么潜在的缺点吗?我的目标始终是提供更轻松的页面和效率,即使它更有效。

提前致谢

2 个答案:

答案 0 :(得分:1)

这可能是很多工作,如果你想做这个工作,它可能会在以后咬你。 我建议您在页面或控件的基础上禁用viewstate,否则我认为没有必要使用ASP.NET webform,您可能想尝试查看ASP.NET MVC。

答案 1 :(得分:0)

您可以使用发送到客户端的0字节ViewState数据来解决这个问题,只需要很少的工作并且不需要更改现有代码:在服务器的文件系统上存储ViewState。

在此处详细了解:https://msdn.microsoft.com/en-us/library/ms972976.aspx

您不必全部阅读,向下滚动直到您到达指定视图状态的位置这一章。您需要做的就是继承页面中使用的Page类,覆盖某些与ViewState相关的方法以更改ViewState行为。示例代码在链接中。

<强>提示

  • 您应该明确地将SSD存储用于此类ViewState。在Azure服务器上,D:Temp-驱动器针对此类用途进行了优化。

  • 为了进一步提高性能,您可以实现一种主要使用System.Web.Caching而不是SSD的缓存机制。但只有在内存已满并且即将清除缓存时才写入SSD。在缓存API,使用缓存对象:了解有关缓存的更多信息:https://msdn.microsoft.com/en-us/library/aa478965.aspx

  • 如果您选择使用缓存,则每当同一用户下次发布时,您还应从缓存中删除旧的ViewState。这将大大减少内存消耗,并且可能在大多数情况下消除对SSD写入的需求。

  • 设置合理的时间来保持ViewState。在大多数类型的页面上,30分钟 - 1小时应该足够了。

请问我是否需要进一步的例子。 :)