文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程Asp.NetASP.NET 2.0功能扩展:跨页提交
精品推荐
特别推荐
·技巧实例: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 2.0功能扩展:跨页提交

日期:2007年12月11日 作者: 查看:[大字体 中字体 小字体]


  ASP.NET 2.0,它的功能有所扩展,能够允许跨页提交。标准HTML表单(form元素)允许你向另外一个页面或者应用程序传递和发送数据信息,方法是使用表单元素。在ASP.NET 1.x中,网页则利用投递机制,把页面数据提交给该页本身。下面就让我们来探讨这个新特性:

  传统办法

  为了便于比较,我们来回顾网页传递数据的老方法。HTML的表格元素有一个action(动作)属性,用来指定服务器端哪项资源(所谓资源,是指一个网页、一段脚本、程序等)来处理这些提交的数据。下面的代码便是一个样例。

以下是引用片段:
<html> 
<head><title>Sample HTML form</title></head> 
<body> 
<form name="frmSample" method="post" action="target_url"> 
<input type="text" name="fullname" id="fullname" /> 
<input type="button" name="Submit" value="submit" /> 
</form> 
</body>
</html> 

  在文本域(名字是fullname)中输入的值将被提交给表单元素的action属性指定的页面或者程序。对于ASP.NET开发者,即使曾经用过标准HTML表单,也是极不多见的。

  ASP.NET开发者面对要从一个网页向另一个网页传递数据信息的任务时,方法选择的余地是异常广阔的。它们包括会话变量(session variables)、cookies、querystring 变量、caching(网页缓存),甚至Server.Transfer方法,但是ASP.NET 2.0还提供了另外一种选择。

  ASP.NET 2.0提供的又一办法

  在设计ASP.NET 2.0的时候,微软认识到了在网页间交叉传递数据的需求。有了这个意识之后,就为ASP.NET的button(按钮)控件增加了一项PostBackUrl属性。它允许你在用户提交的时候,指明这张表单和上面的数据送往何方(也就是由PostBackUrl属性指定的URL值确定)。一般来讲,跨页传递是客户端在后台使用JavaScript进行传送的过程。

以下是引用片段:
<%@ Page language="vb" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html><head>
<title>Cross Postback Example</title>
</head><body>
<form id="frmCrossPostback1" method="post" runat="server">
<asp:Label ID="lblName" runat="server" Text="Name:"></asp:Label>
<asp:TextBox ID="txtName" runat="server"></asp:TextBox><br />
<asp:Label ID="lblE-mailAddress" runat="server" Text="E-mail:"></asp:Label>
<asp:TextBox ID="txtE-mailAddress" runat="server"></asp:TextBox><br /> 
<asp:Button ID="btnSubmit" runat="server" Text="Submit" PostBackUrl="CrossPostback2.aspx" />
</form>
</body>
</html>

  ASP.NET页面拥有两个文本域(分别表示name(名字)和e-mail(电子邮件)),以及一个用来提交数据的button(按钮)。这个提交按钮的PostBackUrl属性被指定为另外一个网页,这样使得表单提交的时候,数据可以发送到那个页面。注意:这个例子中,表单元素通过设置method(方法)属性,让表单提交时采用post[2]提交方式,但这不是必要的,因为所有cross postback(跨页投递)根据设计均使用post方法。

  使用先前页面

  ASP.NET页面经由跨页投递的调用而载入的时候,它上面的对象的IsPostBack属性不会被触发。不过,有一项叫做PreviousPage(前一页)的属性使你能够访问和使用那些应用跨页投递的页面。

  每当一个跨页请求发生时,当前页的PreviousPage属性就把促发投递的页面引用保存下来。如果页面的产生不是来自跨页投递的激发,或者说页面处于不同的程序组,那么PreviousPage属性将不会被初始化。

  你可以通过检查PreviousPage对象来确定页面的载入是否为跨页投递的结果。值如果为null,则说明是普通的载入,而非null值则表明网页来自跨页投递。此外,页面类(Page class)还包含了一个称作IsCrossPagePostBack的方法(method),专门用来确定页面是不是跨页投递的结果。

  一旦确定发生了跨页投递,你就可以通过PreviousPage对象的FindControl方法去访问调用页(calling page)上的控件。下面的代码是我们例子中的第二页;它由前面列出的页面所调用。

以下是引用片段:
<%@ Page language="vb" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html><head>
<title>Cross Postback Example 2</title>
</head><body>
<script language="vb" runat="server">
Sub Page_Load()
If Not (Page.PreviousPage Is Nothing) Then
If Not (Page.IsCrossPagePostBack) ThenResponse.Write("Name:" + CType(PreviousPage.FindControl("txtName"), TextBox).Text + "<BR>")Response.Write("E-mail:" + CType(PreviousPage.FindControl("txtE-mailAddress"), TextBox).Text + "<BR>") 
End If
End If
End Sub
</script>
</body>
</html>

  这个页先判断它是不是由跨页投递所调用。如果是,就通过FindControl方法访问来自调用页的数值,并把用此方法得到的控件转换为TextBox控件,然后显示它们的Text(文本)属性的内容。

  你可以把整个PreviousPage对象转换成触发跨页投递的页面类型。这个方法允许你访问页面的全局属性(public properties)和方法。下面代码是添加了两个属性的第一个清单,这两个属性用于访问域值。

以下是引用片段:
<%@ Page language="vb" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html><head>
<title>Cross Postback Example</title>
<script language="vb" runat="server">
Public ReadOnly Property Name
Get
Return Me.txtName.Text
End Get
End Property
Public ReadOnly Property E-mailAddress
Get
Return Me.txtE-mailAddress.Text
End Get
End Property
</script></head><body>
<form id="frmCrossPostback1" method="post" runat="server">
<asp:Label ID="lblName" runat="server" Text="Name:"></asp:Label> 
<asp:TextBox ID="txtName" runat="server"></asp:TextBox><br />
<asp:Label ID="lblE-mailAddress" runat="server" Text="E-mail:"></asp:Label>
<asp:TextBox ID="txtE-mailAddress" runat="server"></asp:TextBox><br />
<asp:Button ID="btnSubmit" runat="server" Text="Submit" PostBackUrl="CrossPostback2.aspx" />
</form>
</body>
</html>

  既然现在属性已经建好,那你就能很容易访问它们。要警惕的是,Page类的PreviousPage对象必须转换成正确的类型,这样才能正确访问它的属性。这可以通过把它转换成合适的page类别的对象加以实现。

以下是引用片段:
<%@ Page language="vb"%>
<%@ Reference Page="~/CrossPostback1.aspx" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html>
<head>
<title>Cross Postback Example 3</title>
</head><body>
<script language="vb" runat="server">
Sub Page_Load()
Dim cppPage As CrossPostback1_aspx
If Not (Page.PreviousPage Is Nothing) Then
If Not (Page.IsCrossPagePostBack) Then
If (Page.PreviousPage.IsValid) ThencppPage = CType(PreviousPage, CrossPostBack1_aspx)Response.Write("Name:" + cppPage.Name + "<br>")Response.Write("E-mail:" + cppPage.E-mailAddress) 

End If
End If
End If
End Sub
</script>
</body>
</html>

  说明了这一点,它在页面头部定义了调用页的一项引用,那样这个引用类型就能在代码中使用。通过这项引用,实际的VB.NET代码使用CType函数把PreviousPage对象转换成了适当的类型。这之后,那些属性就可以像代码示范的那样使用了。

  关于上述清单中PreviousPage对象IsValid方法的使用在此提醒一下:前页的IsValid属性保证你对它操作之前,它已通过所有合法验证测试。

  总结

  在网页间传递数据参数有很多项应用,包括保持个人用户信息。祖传的网页解决方案,像使用querystring和cookies,允许你很容易当提交发生时从一个页面指向另一个页面。

  ASP.NET 1.1除了提供额外方法外,对这些方法也能很好地支持,可是,ASP.NET 2.0依靠跨页投递,使这方面又有了长足发展。它让一个网页处理来自另一网页的数据变得简单。在你开发你的下一个ASP.NET 2.0程序的时候,可要好好利用这个新概念的优势啊。

(出处:清风网络学院






上一篇:网店顶级域名绑定图文教程

下一篇:初学者认识DOCTYPE的基础知识

相关文章:
·3Ds max多边形建模主要功能命令
·屏蔽五项网络功能 让XP系统极速狂飙
·燕麦可改善男性性功能
·暗黑破坏神2:毁灭之王 符文物品、符石功能、赫拉笛克方块等 - 游戏秘籍
·认识QQ新版新功能:QQ等级加速
·QQ空间日志功能说明
·QQ2007新版在线状态功能使用指南
·Google Earth官方中文版试用(新增宇宙遨游功能)
·QQ会员各种精彩功能及QQ会员特权介绍
·ADSL Modem路由功能的配置
相关软件:
·金山词霸2006 SP1 with 牛津英汉双解词典 全功能第二版
·公司企业网站管理系统模板功能强大版
·功能较强的一个FLASH编辑器
·多功能桌面时钟 V3.2
·QQ显IP 显隐身超级版 2款不同功能最新QQ版本 友情下载
·轩辕剑3外传天之痕修改器之二(包括禁止睬地雷功能)
·Microsoft Excel打印功能增益集 V2.0 绿色版
·软件乐园 exe 性感、娱乐、降、实用,且具有扩展性,见查看
·多功能时钟日历V3.00
·史上最强全功能Win98精简版 39MB 能够在U盘运行的win98

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