文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程Asp.NetASP.NET控件学习笔记之ViewState
精品推荐
特别推荐
·技巧实例:ASP.NET生成静态页面实现方法
·ASP.NET、JSP及PHP之间的抉择
·.net基础知识错误注意二十二点知识
·asp.net2.0学习历程 菜鸟到中级程序员的飞跃
·.NET基础知识-什么是.NET
·初学C#+ASP.NET+Oracle时积累的备忘点滴
·专家详解:复杂表达式的执行步骤
·asp.net中的加密方法
·DataGrid常见关注问题解决方案
·学习笔记 ASP.NET 5种页面转向法
热点TOP10
·DataList嵌套实例
·C#中势将窗体拖拽进行到底
·Paint.NET 3.20正式版下载
·ASP.NET2.0的multiview和wizard控件
·.net基础知识错误注意二十二点知识
·.NET 3.x新特性之自动属性及集合初始化
·ASP.NET中Multi-ListBox控件编程详解
·技巧实例:ASP.NET生成静态页面实现方法
·绝对精华:ASP.NET常用的三十三种实用代码
·动态创建内容时所用的W3C DOM属性和方法

ASP.NET控件学习笔记之ViewState

日期:2008年3月2日 作者: 查看:[大字体 中字体 小字体]


第4回中讲到了给控件添加属性,现在我们在客户端使用代码访问这些属性看看效果如何。把虚拟目录下的所有文件清空,新建一个App_Code文件夹,并在里面新建一个“SimpleControl.cs”文件,并输入如下代码:

例6-1代码1:SimpleControl.cs代码
using System;
using System.Web.UI;
namespace MyControl
{
public class LinksControl : Control
{
protected int _num=0;
public virtual int Num
{
get { return _num; }
set { _num=value; }
}
protected override void Render(HtmlTextWriter writer)
{
writer.Write(Num.ToString());
}
}
}



这里我们建立了一个很简单的控件,它有一个整型属性Num,只是在Render中简单地输出了这个属性的值。下面我们在aspx文件中访问这个属性值。在虚拟目录下新建一个Simple.aspx文件,并输入如下代码:

例6-1代码2:Simple.aspx代码
<script runat="server" language="C#">

void Button1_Click(object sender, EventArgs e)

{

LC.Num++;

}

</script>

<%@Register TagPrefix="CG" Namespace="MyControl" %>

<html>

<body>

<form runat="server">

<CG:LinksControl ID="LC" runat="server" />

<asp:Button ID="Button1" runat="server" onclick="Button1_Click"

Text="Button" />

</form>

</body>

</html>




在aspx文件中,添加了一个Button控件,并在它的单击事件中给我们刚才所定制的控件的Num属性加1。下面在浏览器中运行Simple.aspx文件。这时,只出现一个数字0和一个按钮。我们多次单击按钮,但数字始终为1,并没有如我们所预期的那个不断增加。这是为什么呢?

其实大家应该都知道,客户端向服务器发出请求,服务器做出响应后就不再维持此次请求客户端的信息。也就是说,我们在浏览器中输入一个网址向服务器发出请求,服务器做出响应并实例化LinksControl类,在把响应信息返回给客户端后,控件就被释放了。这时我们在网页上单击了按钮,再次向服务器发出请求,服务器会再次实例化LinksControl类以做出响应。也就是说每次单击按钮,所操作的都是LinksControl类的不同实例,属性值并没有得到保存就很正常了。Web编程和WinForm编程模型真是天壤之别,真是让人头痛。

如何解决这个问题呢?ASP.NET中,把信息回传给服务器时,提交了一个隐藏的ViewState控件,这个控件里存放着页面上的控件的状态。也就是说在点按钮时,把当前LinksControl对象的Num属性回传给服务器,服务器再根据这个值生成新的页面。

如何获得这个回传值呢?Control类晨有一个ViewState属性,它是一个集合,使用ViewState[“Num”]就可以得到Num的回传值。好,打开SimpleControl.cs文件,并对属性的代码稍做修改如下:

例6-2代码1:SimpleControl.cs代码


using System;
using System.Web.UI;
namespace MyControl
{
public class LinksControl : Control
{
public virtual int Num
{
get
{
return ViewState["Num"]!=null ?
(int)ViewState["Num"] : 0;
}
set
{
ViewState["Num"]=value;
}
}
protected override void Render(HtmlTextWriter writer)
{
writer.Write(Num.ToString());
}
}
}


现在再运行Simple.aspx,多次点击按钮,看看数字是否已经随着点击次数增长?

(出处:清风网络学院






上一篇:火狐firefox FTP合二为一 工作省心又方便

下一篇:关门放狗穿透还原卡并下载木马

相关文章:
·教你学习如何破解XP登陆密码
·由浅入深学习Flash制作高射炮游戏
·网上英语学习资源大整理
·笔记本电脑无线上网解决方案大比拼
·直面笔记本电脑购买中的猫腻
·TninkPad笔记本电池使用指南
·如何正确给你的笔记本电脑电池充电?
·暑期英语学习之单词工具篇
·菜鸟学电脑 轻松学习Windows系统中的批处理
·忘记IBM笔记本密码怎么办?
相关软件:
·洪恩轻松教你学电脑_internet学习
·鸟哥的linux私房菜:基础学习篇
·双向式英语学习法mp3+文档
·zemax教学视频和学习笔记
·学无止境-老馋猫烹饪笔记
·2005年造价工程师土建的技术与计量笔记
·2003CPA考试最新审计详细笔记
·1998托福语法笔记
·走遍美国 视频+文本 学习英语的绝好资料
·新东方课堂-新概念1-4笔记

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot