012-ViewState状态保持

Posted 灬伊天?

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了012-ViewState状态保持相关的知识,希望对你有一定的参考价值。

客户端的状态保持方案:ViewState、隐藏域、Cookies、控件状态、URL查询参数
服务端的状态保持方案:Session(会话)、Application、Caching(缓存)、DataBase(数据库)

-》ViewState
-》示例:使用服务器label控件,添加按钮,能实现+1吗?
查看源代码,发现生成了span,这是不能提交数据的,这究竟发生了什么?
本质:隐藏域
源代码中多了名为ViewState的hidden客户端控件,对状态进行了存储
-》属性ViewState:是继承于Control类的键值对集合类型的属性
存储的是:服务器端需要,但是又无法提交给服务器的数据
实现了服务器端控件
-》禁用ViewState:
整个页面禁用:ViewStateMode = ViewStateMode.Disabled
单个控件禁用:EnableViewState="False"
禁用后,可以试一试文本框+1,label加1是否还有效?
-》总结:因为生成了隐藏域,并且存储了太多的内容,所以不推荐使用
尽量少或不使用ViewState、服务器控件

 1 <%@ Page Language="C#" AutoEventWireup="true"
 2     ViewStateMode="Enabled"
 3     CodeBehind="ViewStateTest.aspx.cs" Inherits="t4_State.ViewStateTest" %>
 4 
 5 <!DOCTYPE html>
 6 
 7 <html xmlns="http://www.w3.org/1999/xhtml">
 8 <head runat="server">
 9     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10     <title></title>
11 </head>
12 <body>
13     <form id="form1" runat="server">
14         <div>
15 
16             <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
17             <asp:Label ID="Label1" runat="server" Text="0"></asp:Label>
18 
19         </div>
20     </form>
21 </body>
22 </html>
 1     public partial class ViewStateTest : System.Web.UI.Page
 2     {
 3         protected void Page_Load(object sender, EventArgs e)
 4         {
 5             if (!IsPostBack)
 6             {
 7                 ViewState["yg"] = "杨过";
 8             }
 9         }
10 
11         protected void Button1_Click(object sender, EventArgs e)
12         {
13             Label1.Text = (int.Parse(Label1.Text) + 1).ToString();
14             //Label1.Text = ViewState["yg"].ToString();
15         }
16     }

 

以上是关于012-ViewState状态保持的主要内容,如果未能解决你的问题,请参考以下文章

如何更新导航抽屉中的有状态小部件,同时在 Android 中保持与片段相同的类?

对“xxx”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。 错误解决一例。(代码片段

在底部导航栏中保存片段状态

多选模式列表视图行在删除后保持选中状态

ViewModel 在导航导航中没有被清除,并且 viewmodel 中的实时数据保持活动状态

使用volley时如何保持进度条状态?