ASP.NET跨页面传值技巧总结


  关于页面传值的 步骤,激发了众多 探讨 。看来有众多人关注这个,我就我个人观点做了些总结, 盼望对大家有所协助 。

  1. 使用QueryString变量

  QueryString是一种十分 方便的传值 模式,他 可以将 传递的值显示在阅读器的地址栏中 。假如是传递一个或多个安全性要求不高或是 构造 方便的数值时, 可以 使用这个 步骤 。然而关于传递数组或对象的话,就不能用这个 步骤了 。下面是一个例子:

  a.aspx的C#代码

  private void Button1_Click(object sender, System.EventArgs e)

  {

  string s_url;

  s_url = "b.aspx?name=" + Label1.Text;

  Response.Redirect(s_url);

  }

  b.aspx中C#代码

  private void Page_Load(object sender, EventArgs e)

  {

  Label2.Text = Request.QueryString["name"];

  }

  2. 使用Application 对象变量

  Application对象的作用 规模是整个全局,也便是说对全部消费者都有效 。其常用的 步骤用Lock和UnLock 。

  a.aspx的C#代码

  private void Button1_Click(object sender, System.EventArgs e)

  {

  Application["name"] = Label1.Text;

  Server.Transfer("b.aspx");

  }

  b.aspx中C#代码

  private void Page_Load(object sender, EventArgs e)

  {

  string name;

  Application.Lock();

  name = Application["name"].ToString();

  Application.UnLock();

  }

  3. 使用Session变量

  想必这个 确定是大家 使用中最常见的用法了,其操作与Application 类似,作用于消费者个人,所以, 适量的存储会招致服务器内存资源的耗尽 。

  a.aspx的C#代码

  private void Button1_Click(object sender, System.EventArgs e)

  {

  Session["name"] = Label.Text;

  }

  b.aspx中C#代码

  private void Page_Load(object sender, EventArgs e)

  {

  string name;

  name = Session["name"].ToString();

  }

  4. 使用Cookie对象变量

  这个也是大家常 使用的 步骤,与Session一样,其是什对每一个消费者而言的,然而有个 性质的区别,即Cookie是 存放在客户端的,而session是 存放在服务器端的 。而且Cookie的 使用要配合ASP.NET内置对象Request来 使用 。

  a.aspx的C#代码

  private void Button1_Click(object sender, System.EventArgs e)

  {

  HttpCookie cookie_name = new HttpCookie("name");

  cookie_name.Value = Label1.Text;

  Reponse.AppendCookie(cookie_name);

  Server.Transfer("b.aspx");

  }

  b.aspx中C#代码

  private void Page_Load(object sender, EventArgs e)

  {

  string name;

  name = Request.Cookie["name"].Value.ToString();

  }

  5. 使用Server.Transfer 步骤

  这个才 可以说是面象对象开发所 使用的 步骤,其 使用Server.Transfer 步骤把流程从目前页面 疏导到另一个页面中,新的页面 使用前一个页面的应答流,所以这个 步骤是 彻底面象对象的,简洁有效 。

  a.aspx的C#代码

  public string Name

  {

  get{ return Label1.Text;}

  }

  private void Button1_Click(object sender, System.EventArgs e)

  {

  Server.Transfer("b.aspx");

  }

  b.aspx中C#代码

  private void Page_Load(object sender, EventArgs e)

  {

  a newWeb; //实例a窗体

  newWeb = (source)Context.Handler;

  string name;

  name = newWeb.Name;

  }

  传值 步骤 比较多

  我在增加一个

  Cross-Page Posting

  定位至于源网页位于 雷同的 利用程序的网页, 可以读取源网页的值和公共属性,然而不要按阅读器中的再一次 整顿和上一步,这样会照成 无奈预期的 动机

  eg:

  aspx

  

  您的名字:

  

  Text=" 传递" OnClick="btn_name_Click" />

  

  cs:

  TextBox name = (TextBox)PreviousPage.FindControl("name");//非public 成员

  Label1.Text = " 欢送你:" + name.Text;

  previouspage 本身属于page类,而且惟独在 起源网页和 指标网页属于同一个asp.net 利用程序下的时候 威力 引用,假如网页不是跨网页发布的 指标,或者是网页在不同的 利用程序之中,就不会初始化previouspage属性,就不能 使用previouspage来存取任何信息

   获得网页的公共属性:

  source.cs:

  public string UserName

  {

  get{return aa.text;}

  }

  cross-page posting.aspx:

  <%@ PreviousPageType VirtualPath="'/Cross-Page Posting/Source.aspx"%>

  cross-page posting.cs:

  lab.text = previousopage.username;

  //一个网页中不得不 批示一个previousPage,否则出浮现编译 舛误