您的位置:首页 > 编程语言 > ASP

asp.net控件开发基础十一

2009-03-19 18:56 465 查看
上一篇讨论了集合属性的使用,这一篇我们主要来讨论视图状态的自定义管理.

刚开篇的时后在最后把属性值用视图状态来保存时,得以把当前状态保存下来,关于视图状态的概述,这里不再累赘,没了解过的朋友可以在MSDN里输入视图状态概述了解一下.以下我们还是以以前讲过的内容为例,一起继续来改善控件的使用(第五篇和第九篇的例子)

示例一



我们启用了跟踪,按下确定按钮后,控件属性发生变化,按下无事件按钮后,控件状态则恢复到之前的状态,而且在跟踪状态下发现Custom无视图状态.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

<title>无标题页</title>

</head>

<body>

<form id="form1" runat="server">

<div>

<custom:Custom ID="Custom1" runat="server">

</custom:Custom>

<br />

<br />

<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="确定" />

    

<asp:Button ID="Button2" runat="server" Text="无事件" /> 

</div>

</form>

</body>

</html>

那么接下来将修改Custom的属性更改为视图状态保存,代码如下

重新编译一下代码,再次测试上面代码Custom的Age和CustomMetier属性可以保存其状态,而无法保存CustomAddress这个复杂属性的状态值.这个也可以理解,我们没有为CustomAddress的子属性值保存在视图状态里.启动跟踪后,还发现Custom控件在更改控件属性后保存了一部分的视图状态.

private bool _isTrackingViewState;

private StateBag _viewState;

protected StateBag ViewState

private StateBag _viewState;

2

15

22public Address CustomAddress

internal void SetDirty()

<system.web>

<pages maxPageStateFieldLength="1000" >

<system.web>

asp.net2.0还加入了视图状态持久性机制,大家可以在博客园参考相关文章,这里就当了解下有这种机制存在.

好了,就写到这里,个人认为视图状态是很重要的,下面很多东西都要涉及到它,所以要好好理解这个东西.

写的比较乱,对视图状态我真的比较敏感,很难理解,也难表达,可能很多地方写错,还请指出,这样才能提高

示例代码下载

转自:/article/4625084.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: