跨页传值 常用的几种方法

跨页传值,常用有以下几种方法,楼主可以参考一下:

一. 使用QueryString变量
    QueryString是一种非常简单也是使用比较多的一种传值方式,但是它将传递的值显示在浏览器的地址栏中,如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。

  Response.Redirect( "target.aspx?param1=hello&param2=hi ") 
  接收页面: string str = Request.QueryString["param1"]; 
  string str1 = Request.QueryString["param2];
二.使用Cookie对象变量(Cookie是存放在客户端的)
  设置Cookie: HttpCookie cookie_name = new HttpCookie("name");
  cookie_name.Value = Label1.Text;
  Reponse.AppendCookie(cookie_name);
   
  获取Cookie:
  string name= Request.Cookie["name"].Value.ToString();
 
三. 使用Session变量(session是存放在服务器端的)
  设置Session:  Session["name"] ="hello";
  获取Session: string name = Session["name"].ToString();
四.使用Application 对象变量
  Application对象的作用范围是整个全局,也就是说对所有用户都有效。此种方法不常使用,因为Application在一个应用程序域范围共享,所有用户可以改变及设置其值,故只应用计数器等需要全局变量的地方。 
  设置Application : Application["name"] = ="hello";
  获取Application : string name = Application["name"].ToString();
五. PostBackUrl()方法
  default.aspx页面:

Code
1 <asp:Button ID="Button1" Runat="server" Text="PostToAnotherPage" PostBackUrl="~/Default2.aspx" />
2
  default2.aspx页面:


Code
1 if (PreviousPage != null)
2 {
3 TextBox textBox1 = (TextBox)PreviousPage.FindControl("TextBox1");
4 Response.write(textBox1.Text );
5 }

六.使用Server.Transfer方法
    这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效。下面这个代码是展示在需要很多个参数的时候,使用的方法,如果参数比较少就没必要使用这个方法了.
如果让所有的查询页面都继承一个接口,在该接口中定义一个方法,该方法的唯一作用就是让结果页面获得构建结果时所需的参数,就可实现多页面共享一个结果页面操作! 

1、先定义一个类,用该类放置所有查询参数:


Code
/** <summary>
/// QueryParams 的摘要说明
/// </summary>
public class QueryParams

  private string firstName; 
  private string lastname;
  private int age;
   

  public string Firstname 
  {
  get { return this.firstname; }
  set { this.firstname = value; } 
  } 
  public string LastName 
  {
  get { return this.lastname; }
  set { this.lastname = value; } 
  }
  public string Age
  {
  get { return this.age; }
  set { this.age = value; }
  } 
 
}



2、接口定义: 


Code
/** <summary > 
  /// 定义查询接口。 
  /// </summary > 
  public interface IQueryParams
  {
  /** <summary > 
  /// 参数 
  /// </summary > 
  QueryParams Parameters { get;}
  } 


  3、查询页面继承IQueryParams接口(QueryPage.aspx):
QueryPage.aspx


Code
<form id="form1" runat="server">
  <div>
  <asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox>
  <asp:TextBox ID="txtLastName" runat="server"></asp:TextBox>
  <asp:TextBox ID="txtAge" runat="server"></asp:TextBox>
  <asp:Button ID="btnEnter" runat="server" Text="Button" OnClick="btnEnter_Click" /></div>
  </form>


QueryPage.aspx.cs


Code
public partial class QueryPage : System.Web.UI.Page, IQueryParams 
{
  private QueryParams queryParams;
   
  public QueryParams Parameters 
  { 
  get 
  { 
  return queryParams; 
  } 
  } 
   
  public void btnEnter_Click(object sender, System.EventArgs e) 
  { 
  //赋值 
  queryParams = new QueryParams();
  queryParams.FirstnName = this.txtFirstName.Text;
  queryParams.Lastname = this.txtLastName.Text;
  queryParams.Age = this.txtAge.Text;
  Server.Transfer( "ResultPage.aspx "); 
  }

  protected void Page_Load(object sender, EventArgs e)
  { }
}
4、接收页面(ResultPage.aspx):
ResultPage.aspx.cs
public partial class ResultPage : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
  {
  QueryParams queryParams = new QueryParams();
  IQueryParams queryInterface;
  //实现该接口的页面 
  if (Context.Handler is IQueryParams)
  {
  queryInterface = (IQueryParams)Context.Handler;
  queryParams = queryInterface.Parameters;
  }

  Response.Write("FirstName: ");
  Response.Write(queryParams.FirstName);
  Response.Write(" <br/ >Lastname: ");
  Response.Write(queryParams.LastName); 
  Response.Write(" <br/ >Age: ");
  Response.Write(queryParams.Age); 

  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值