首页 > 代码库 > 012-ViewState状态保持
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状态保持
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。