如何在页面状态禁止的情况下维持控件的状态?
来源:互联网 发布:js用二维数组输出表格 编辑:程序博客网 时间:2024/05/16 07:41
如何在页面状态禁止的情况下维持控件的状态?
ASP.NET 2.0状态管理的新增功能
• 控件状态
– 为了让控件正常工作,有时需要存储控件状态数据。例如,如果编写了一个自定义控件,其中具有显示不同信息的不同选项卡,为使该控件如预期一样工作,控件需要知道在往返过程中选择的是哪个选项卡。ViewState 属性可用于此目的,但开发人员可能在页级别关闭了视图状态,从而有效地中断控件。为解决此问题,ASP.NET 页框架在ASP.NET 2.0 版中公开了一种称为控件状态的新功能。
– ControlState 属性允许保持特定于控件的属性信息,不像ViewState 属性一样可以关闭。若要使用控件状态,控件必须在初始化过程中调用RegisterRequiresControlState 方法,然后重写SaveControlState 和LoadControlState 方法。
【源代码】
首先我们创建一个用户控件NumControl.ascx,,在后台代码编写如下:
public partial class NumControl : System.Web.UI.UserControl
{
Private int currentIndex = 0;
public int getIndex
{
set
{
this.currentIndex = value;
}
get
{
return this.currentIndex;
}
}
protected override void OnInit(EventArgs e)
{
Page.RegisterRequiresControlState(this);
base.OnInit(e);
}
protected override object SaveControlState()
{
return currentIndex != 0 ? (object)currentIndex : null;
//return base.SaveControlState();
}
protected override void LoadControlState(object savedState)
{
if (savedState != null)
currentIndex = (int)savedState;
//base.LoadControlState(savedState);
}
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(this.currentIndex.ToString());
}
}
再新创建一个aspx页面,在上面放置一个按钮和上面创建的用户控件,并按钮事件如下:
protected void btn_Add_Click(object sender, EventArgs e)
{
this.myNum.getIndex++;
}
这样运行后,用户控件也维持了控件状态。
ASP.NET 2.0状态管理的新增功能
• 视图状态分块
– 图状态提供了一种简单的方法来自动保持页上的字段和控件数据,而不需要在往返服务器期间手动请求并重新填充。它还允许在ViewState 属性中存储页上的自定义数据。
– 但是,在某些情况下,视图状态数据会变得很大。因为视图数据存储在隐藏的字段中,某些代理或防火墙会阻止对包含这些数据的页的访问。因此,ASP.NET 2.0 页框架引入了一种名为视图状态分块的功能。如果视图状态的数据量变得太大,视图状态分块自动将数据分成多个块区,并将这些数据放在多个隐藏形式的字段中。
– 若要启用视图状态分块,请将MaxPageStateFieldLength 属性设置为在单个视图状态字段中允许的最大大小(以字节为单位)。当该页回发到服务器时,该页会在页初始化阶段分析视图状态字符串,并还原页中的属性信息。默认设置是-1,这表示不存在最大大小,不会将视图状态分成多个块区
【源代码】
一般情况下我们可以从客户端看到视图状态保存到隐藏域中:
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
value="/wEPDwUJNzYxNDY3MTEyZGQvZPaoYFqnx4XzmHlNwsjTrbK3hw==" />
修改配置文件如下,设置单个视图状态字段中允许的最大大小为50字节:
<system.web>
<pages maxPageStateFieldLength="50"/>
</system.web>
查看客户端VIEWSTATE的隐藏域的名字会增加,也就是把数据块分割成多个:
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
value="/wEPDwUJNzYxNDY3MTEyZGQvZPaoYFqnx4XzmHlNwsjTrbK3hw" />
<input type="hidden" name="__VIEWSTATE1" id="__VIEWSTATE1" value="==" />
- 如何在页面状态禁止的情况下维持控件的状态?
- 如何维持APP用户的登陆状态
- 如何维持APP用户的登陆状态
- asp.net页面如何维持提交后的页面位置状态
- Web会话状态的维持
- Web会话状态的维持
- Web会话状态的维持
- Web会话状态的维持
- 如何在页面标签(textaera)禁止修改状态下可以修改.
- session维持登录状态的简单例子
- Android中 一些维持状态的经验
- 如何在不修改源码的情况下监听去电状态(接通,挂断)
- ScriptX控件如何在不跳转页面的情况下将要打印的内容打印出来
- ScriptX控件如何在不跳转页面的情况下将要打印的内容打印出来
- ScriptX控件如何在不跳转页面的情况下将要打印的内容打印出来
- 如何在页面中检测ActiveX控件的安装情况
- 如何在页面中检测ActiveX控件的安装情况
- 手机端如何维持登录状态
- 这个学期的安排
- 一位自杀者的遗书(幽默)
- eclipse下wtp+HibernateTools开发笔记
- 气候变暖已成不可逆转的重大灾难?
- TCP/IP编程实现远程文件传输
- 如何在页面状态禁止的情况下维持控件的状态?
- 功能不错的分页存储过程,可支持多表查询,任意排序
- 川渝严重高温伏旱根源:全球气候变暖导致灾情频发
- 开始写BLOG
- 世行报告称气候变暖已给发展中国家造成影响
- What are FeliCa and PaSoRi?
- 将忽悠进行到底:智彗星杀毒软件推出2007
- 球变暖导致巨大灾难 及早应对海平面上升危害
- 《如何阅读一本书》——奔走相告