C# asp.net使用get维护viewstate

C# asp.net使用get维护viewstate,c#,asp.net,postback,viewstate,C#,Asp.net,Postback,Viewstate,在重新加载页面时,我希望保留用户在点击submit时输入的值 我担心viewstates对于页面来说很麻烦,无论是在带宽上还是在页面查看器下载页面的时间上。我的字节很便宜:p 我的问题是不要使用服务器控件,这样我就可以让页面上的表单访问自身和aspx <input type="text" id="user_email" name="email" value="<%=Request.Form["email"] %>" /> 这允许我不使用viewstate。这样做有没

在重新加载页面时,我希望保留用户在点击submit时输入的值

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

我的问题是不要使用服务器控件,这样我就可以让页面上的表单访问自身和aspx

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

这允许我不使用viewstate。这样做有没有潜在的缺点?我的目标始终是一个更轻的页面和效率,即使它是更多的工作


提前感谢

这可能需要做很多工作,如果你想做这项工作,以后可能会遇到麻烦。
我建议您在页面或控件基础上禁用viewstate,否则我认为使用ASP.NET webform没有任何意义,您可能希望尝试查看ASP.NET MVC。这可能需要大量工作,如果您想解决这一问题,它可能会对您造成不利影响。
我建议您在页面或控件基础上禁用viewstate,否则我认为使用ASP.NET webform没有任何意义,您可能希望改为查看ASP.NET MVC。

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

请在此处阅读更多信息:

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

提示

  • 对于这种ViewState,您应该明确使用SSD存储。在Azure服务器上,D:Temp-drive针对这种类型的使用进行了优化

  • 为了进一步提高性能,您可以实现一种缓存机制,primarely使用System.Web.Caching代替SSD。但仅在内存已满且缓存即将擦除时写入SSD。在缓存API下,使用缓存对象阅读有关缓存的更多信息:

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

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


如果您需要更多示例,请询问我。:)

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

请在此处阅读更多信息:

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

提示

  • 对于这种ViewState,您应该明确使用SSD存储。在Azure服务器上,D:Temp-drive针对这种类型的使用进行了优化

  • 为了进一步提高性能,您可以实现一种缓存机制,primarely使用System.Web.Caching代替SSD。但仅在内存已满且缓存即将擦除时写入SSD。在缓存API下,使用缓存对象阅读有关缓存的更多信息:

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

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


如果您需要更多示例,请询问我。:)

记住:不仅值存储在viewstate中!我同意阿德拉斯的观点。请记住,ControlState也存储在隐藏的VIEWSTATE字段中。使用ASP.NET web表单时,我总是从自定义基类派生页面,该基类基本上消除了页面的所有视图/控件状态(并禁用“回发”)。显然,JS脚本仍在被引用,隐藏字段被呈现到页面上,但它已经比常用的web表单好得多。另一个输入:处理hiddenfields的viewstate和transferal真的是你的瓶颈吗。。。否则我就应付不了了!另一个输入:要了解viewstate中存储的内容,请将
\uu viewstate
字段的内容复制到此base64解码器(),然后点击
安全解码为文本
记住:不仅值存储在viewstate中!我同意阿德拉斯的观点。请记住,ControlState也存储在隐藏的VIEWSTATE字段中。使用ASP.NET web表单时,我总是从自定义基类派生页面,该基类基本上消除了页面的所有视图/控件状态(并禁用“回发”)。显然,JS脚本仍在被引用,隐藏字段被呈现到页面上,但它已经比常用的web表单好得多。另一个输入:处理hiddenfields的viewstate和transferal真的是你的瓶颈吗。。。否则我就应付不了了!另一个输入:要了解viewstate中存储的内容,请将
\uu viewstate
字段的内容复制到此base64解码器()并点击
安全解码为文本
+,没有比
启用viewstate=“false”
更简单的了!不一定。禁用视图状态不会禁用控件状态,这也会导致PLOPE