第九讲 页面跳转与数据传输教学目的:
一、页面间的跳转二、使用查询字符串传送数据到下一页三、实现在页面间交换数据教学重点:
一、掌握处理页面间关系的方法;
二、掌握查询字符串传送数据的方法;
三、掌握页面传输数据的方法。
一、添加网页与设置启动项每个 ASP.NET应用程序项目建立时,开发器会自动创建一个 WebForm1.aspx的网页,该网页为项目的启动网页。
若要向项目中添加网页,则:在“项目”菜单的下拉菜单上单击 【 添加 Web窗体 】,在模板区选择
,Web窗体”,在名称框内输入网页的名称,单击
【 打开 】 按钮,一个新的网页被添加到项目中。
开发器默认第一个网页为启动网页,若需要将
,WebForm2.aspx” 设置为项目的启动网页,右击
,WebForm2.aspx”,在弹出菜单上单击 【 设为起始页 】 即可。
二、页面间的跳转从一个页面跳转到另一个页面有多种方法实现。
(一 )在浏览器的地址栏中输入目的网页的 URL
在浏览器的地址栏中输入目的网页的 URL,可以定向到新的网页。
(二 )调用脚本打开另一个窗口调用 JavaScript脚本的 window.open()方法,可以打开浏览器的另一个窗口,在该方法的第一个参数中指定需要展示的页面的 URL。打开的另一个窗口为非模态窗口,可以在它与别的窗口间切换焦点。
也可以调用 JavaScript脚本的
window.showModalDialog()方法显示一个模态对话框,在该方法的第一个参数中指定需要展示的页面的 URL。模态对话框独占屏幕焦点,此时不能够将焦点切换到别的窗口。
(三 )在页面上增加导航按钮
Web窗体服务器控件 HyperLink专门为导航到新的 URL而设计。
该控件的 NavigateUrl用来指定导航目标。该属性可以在属性窗口或程序代码中指定。如指定控件 HyperLink1导航到
WebForm2.aspx,则其 HTML标记为:
<asp:HyperLink id="HyperLink1" runat="server"
NavigateUrl="WebForm2.aspx">跳转到第二页
</asp:HyperLink>
由于 HyperLink控件专门用来导航到新的 URL,因此它没有
Click一类的事件来添加额外的代码,若需要在程序中再次改变它的导航目标,在网页或别的控件的事件中改变其
NavigateUrl属性就是。如:
HyperLink1.NavigateUrl="WebForm3.aspx";
当用户单击该控件时,会导航到 WebForm3.aspx上去。
(四 )利用 DataGrid控件的超级链接列当浏览数据表的记录时需要跳转到它对应的专门网站或网页时,使用 DataGrid控件的超级链接列就可以实现。如数据表的每一行记录了一个学校的简略资料,要实现导航到各学校的网站,只要将其网站的 URL记录在数据表的某列中,
将该列联系到 DataGrid控件的超级链接列就可以。导航到网页的做法类似。
(五 )调用 Response.Redirect方法
Response是 ASP.NET的一个内部对象,其类名为
HttpResponse,主要的作用是输出数据到客户端。常用到 2个方法:
● Write方法:输出数据到客户端。如
Response.Write(“Hello”);
● Redirect方法:将浏览器重定向到新的 URL。
可以在程序的任何位置使用 Response.Redirect方法将浏览器重定向到新的 URL。如在登录页面中,当验证了用户的密码和权限确认其为合法用户时,就可以调用该方法定向到其他页面上。方法是:
Response.Redirect(,目标 URL”) ;
如:
Response.Redirect(”WebForm2.aspx”) ;
当该行被执行时,就跳转到 WebForm2.aspx页面上。
Response.Redirect方法首先发送一个 HTTP响应到客户端,通知客户端跳转到一个新的 URL,然后客户端再发送跳转请求到服务器端。在页面跳转后其内部控件保存的所有数据都将丢失 。
(六 )调用 Server.Transfer方法
Server.Transfer方法的作用和调用方式与
Response.Redirect基本是相同的。例如:
Server.Transfer(“WebForm2.aspx”);
调用 Server.Transfer方法跳转到另一个页面后,浏览器的地址栏中的信息仍然保持不变,表明重定向的请求是在服务器端进行的,页面跳转时仅将页面处理的控制权进行了移交,浏览器不知道服务器执行了一次页面变换。因此,从 A页面跳转到 B页面后,在 B页面中仍然可以提取到 A
页面中的数据,前提是,它们都是,aspx页面。
★ Response.Redirect与 Server.Transfer比较
1,Response.Redirect:发送一个 HTTP 响应到客户端,告诉客户端跳转到一个新的页面,客户端再发送跳转请求到服务器。
使用此方法时,将无法保存所有的内部控件数据,页面 A 跳转到页面 B,页面 B
将无法访问页面 A 中 Form 提交的数据。
若需要从 A页面传送数据到 B页面,可以借助于查询字符串,Session对象来实现
2,Server.Transfer:用于把处理的控制权从一个页面转移到另一个页面,在转移的过程中,没有离开服务器,内部控件保存的信息不变,你能从页面 A 跳到页面 B
而 不会丢失页面 A 中收集的用户提交信息。
此外,在转移的过程中,浏览器的 URL 栏不变。
3,Server.Transfer只能够转跳到本地虚拟目录指定的页面( *.ASPX文件),而
Response.Redirect则十分灵活;( URL和
*.ASPX文件都可以)
4、建议是实现页面跳转时根据具体情况灵活在两种方法之间进行选择。
(七 )、使用脚本函数 history.go()
当使用某种方法从 A页面跳转到 B页面后,如果想从 B页面返回到 A页面,可以调用
history.go()方法来实现。
protected void Button1_Click(object
sender,EventArgs e)
{
this.Button1.Attributes.Add("onclick"
,"history.go(-1)");
}
★ (八)使用 Session对象在页面间进行传值
Session对象是 ASP.NET的一个内置对象,任何一个用户从进入网站到离开网站的过程中,服务器都会给该用户分配一个 Session对象,它是用来唯一区别各个用户的对象,各个用户所分配的
Session对象是不同的,Session对象存储着各个用户的相关信息内容。
1、使用 Session对象保存数据
Session[,变量名” ]=值
2、获取 Session对象的值变量名 =Session[,变量名” ]
三、使用查询字符串在页面间交换数据从 A页面跳转到 B页面后,往往需要从 A页面传送一些信息到 B页面中去。从一个页面传送数据到另一个页面可以使用查询字符串、内部对象或上一个网页的公有数据等。
查询字符串是附加在网页 URL后从,?” 开始直到结尾的一串字符,当浏览器从一个页面重定向到另一个页面时,URL附带查询字符串一并传送到目的页面,因而在目的页面中可以取得查询字符串带过来的信息。
1.构造查询字符串查询字符串由“属性名 =属性值”的格式构成,若有多个属性,属性间用,&” 连接,中间不要留有空格。 如:
string URL=”WebForm2.aspx?name= 张山 &No=1000”;
因为整个 URL和查询字符串一起构成了一个字符串,若查询字符串的某个属性值为变量时,该变量必须是 string类型。
如上例可以这样表示;
string Name=” 张山” ;
string Number=”1000”;
string URL=”WebForm2.aspx?name=”+Name+”&No=”+Number;
2.解析查询字符串当查询字符串随同 URL一起被传送到目标页面后,需要将其各个属性值解析出来才能为程序所用。格式是:
Request.Params[,属性名” ]。 如解析上例的两个属性值:
string Name=Request.Params["name"];
string Number=Request.Params["No"];
3.查询字符串的应用查询字符串的使用简单易行,一般的浏览器和客户端装置都能识别查询字符串。一般限制查询字符串的长度在 255个字符之内,因此通过它不能携带过多的信息,也不能携带非字符串类型的信息,同时由于查询字符串可以从浏览器的地址栏中直接看到,其保密性较差。
四、添加网页属性在页面间交换数据当调用 Server.Transfer方法从 A页面跳转到 B页面后,
可以在 B页面中通过上下文句柄获取 A页面的实例,通过该实例访问到 A页面的公有成员,如公有的字段、控件和属性等。这需要向 A页面添加一些公有的属性。
示例 添加网页属性将数据集传送到下一个页面这个项目中有:登录页面( login.aspx)和详情页面
(detail.aspx) 2个网页。登录页面连接到数据库 MMIS,
将用户输入的账号和密码与数据表 memberInfo中的账号和密码进行核对。若为合法用户,就将他的姓名和性别送入到详情页面,以便让详情页面知道是谁登录到了该页面;若账号或密码有误,则给出一个错误信息后仍停留在登录页面。
本例将用户登录时查询到该用户的数据放在一个数据集中,为 Login页面添加一个属性将该数据集返回,
以便在下一个页面中访问到这个数据集。
当调用 Server.Transfer方法从 Login页面跳转到
detail页面后,在 detail页面中通过上下文句柄获取
Login页面的实例,通过该实例访问到 Login页面的数据集属性,然后从数据集属性中提取记录的各个字段值。
1.程序运行结果登录页面 登录后的页面