在asp.net的Web表单间传值

来源:互联网 发布:软件方面的证书 编辑:程序博客网 时间:2024/05/16 16:04
在asp.net的Web表单间传值 :::::. 作者 :不详 来源 :http://www.coderpub.com 转载 加入时间 :2005-11-10 在asp.net的Web表单间传值 //////////////////////////////////////// 介绍 Asp.net的Web表单为开发人员提供了极佳的事件驱动编程模型,简化了应用程序的开发设计,但同时也带来了一些问题。例如,在传统ASP编程中可以很容易地将数据用POST方法传送到另一个ASP页面去处理。但要想在Asp.net的Web表单模型中完成同样的事情却不可能。然而,可以采用其它的一些方法来做到。本文列举了几个办法,具体来说,这些方法包括:querystring,session和Server.Transfer。 使用Querystring Querystring是页面间传值的老办法。主要的好处就是使用起来非常简单,缺点则是传送的值可以在浏览器的地址栏里看到,而且也不能传送对象。当只需传送少量值并且没有安全性要求时,这个办法尤其适合。要使用这个办法需遵循下列步骤: 创建表单,包括必要的控件 在表单中放置可将表单post到服务器的button或linkbutton控件 在button的click事件处理程序里创建包含了指向目的页面的URL字符串 将要传送的值添加到这个URL字符串里,以作为querystring的参数 使用Response.Redirect导航到指定的URL 下面是代码片段: 源表单 -------------------------------------------------------------- private void Button1_Click(object sender, System.EventArgs e) { string url; url="anotherwebform.aspx?name=" + TextBox1.Text + "&email=" + TextBox2.Text; Response.Redirect(url); } 目的表单 -------------------------------------------------------------- private void Page_Load(object sender, System.EventArgs e) { Label1.Text=Request.QueryString["name"]; Label2.Text=Request.QueryString["email"]; } 使用session变量 这是另一种在页面间传值的办法。利用这个办法,可以将要传送的值保存到session变量,然后在另一个Web表单中进行存取。然而,需要知道的是,将太多的数据保存到session变量会给服务器带来额外的负担。所以,应该谨慎地使用这种方法。此外,采用这种方法可能需要在程序中以人工方式来清除不需要的session变量。典型的用法如下: 创建Web表单,包括必要的控件 在表单中放置可将表单post到服务器的button或linkbutton控件 在button的事件处理程序里设置session变量,将要传送的值放入其中 使用Response.Redirect导航到目的表单 在目的表单存取session变量,如必要并进行清除 以下是代码片段: 源表单 -------------------------------------------------------------- private void Button1_Click(object sender, System.EventArgs e) { //textbox1 and textbox2 are webform controls Session["name"]=TextBox1.Text; Session["email"]=TextBox2.Text; Response.Redirect("anotherwebform.aspx"); } 目的表单 -------------------------------------------------------------- private void Page_Load(object sender, System.EventArgs e) { Label1.Text=Session["name"].ToString(); Label2.Text=Session["email"].ToString(); Session.Remove("name"); Session.Remove("email"); } 使用Server.Transfer 这个办法稍微复杂。做法是先将要传送的数据定义为源表单的property属性,因此需要在源表单添加些属性定义代码。然而换来的好处是代码相当清晰,而且能体现出面向对象的特点。步骤如下: 创建Web表单,包括必要的控件 创建用以返回要传送数值的Get属性 在表单中放置可将表单post到服务器的button或linkbutton控件 在button的事件处理程序里调用Server.Transer方法以导航到目的表单 在目的表单中通过Context.Handler属性取得源表单的引用。这样就可以使用在源表单创建的Get属性来存取要传送的数据 以下是代码片段: 源表单 -------------------------------------------------------------- public string Name { get { return TextBox1.Text; } } public string EMail { get { return TextBox2.Text; } } private void Button1_Click(object sender, System.EventArgs e) { Server.Transfer("anotherwebform.aspx"); } 目的表单 -------------------------------------------------------------- private void Page_Load(object sender, System.EventArgs e) { //create instance of source web form WebForm1 wf1; //get reference to current handler instance wf1=(WebForm1)Context.Handler; Label1.Text=wf1.Name; Label2.Text=wf1.EMail; } 小结 本文介绍了三种在Asp.net页面间传值的办法:Querystring,Session和Server.Transfer。同时也对这三种办法的优缺点进行了分析。
原创粉丝点击