ASP.NET頁面間傳遞對象的另類方法

來源:互聯網
上載者:User
asp.net|對象|頁面

 我們知道,Asp.net在不同頁面間傳遞對象的時候可以用Session來實現。現在我想介紹另外一種方法來達到目的。

    主要思路:我們需要兩個頁面,一個Sender.aspx負責發送所需傳遞的對象,一個Receiver.aspx負責接受send過來的對象。Sender.aspx主要是運用了Server.Transfer來終止當前頁面的執行,並開始調入Receiver.aspx來取出對象。

具體實現:

ITransfer.cs
namespace Sunrise.Sample.FormTransfer
{
   /// <summary>
   /// 此介面定義了一個返回所需傳遞對象的屬性
   /// 發送對象的頁面必須實現此介面
   /// </summary>
    public interface ITransfer
    {
    MyClass MyObject
    {
       get;
       set;
    }
    }
}


MyClass.cs
namespace Sunrise.Sample.FormTransfer
{
 /// <summary>
 /// 一個用來示範的簡單類
 /// </summary>
 public class MyClass
 {
  private string _strMessage;

  public MyClass()
  {
  }

  public string Message
  {
   get
   {
    return this._strMessage;
   }
   set
   {
    this._strMessage = value;
   }
  }

 }
}


後台代碼檔案Receiver.aspx.cs

namespace Sunrise.Sample.FormTransfer
{
 /// <summary>
 /// 接收對象的頁面
 /// </summary>
 public class Receiver : System.Web.UI.Page
 {
  private void Page_Load(object sender, System.EventArgs e)
  {
   ITransfer mySender;

   if(!IsPostBack)
   {
    //判斷當前頁面的HttpHandler,如果實現了ITransfer介面
    //就轉換成ITransfer
    if(Context.Handler is ITransfer)
    {
     mySender = (ITransfer)Context.Handler;

     Response.Write(mySender.MyObject.Message);
    }
    else
    {
     Response.Redirect("Sender.aspx");
    }
   }
  }
 
  .
  .
  .
 }
}


後台代碼檔案Sender.aspx.cs

namespace Sunrise.Sample.FormTransfer
{
 /// <summary>
 /// 發送對象的頁面
 /// </summary>
 public class Sender : System.Web.UI.Page, ITransfer   //繼承ITransfer
 {
  protected System.Web.UI.WebControls.Button btnSend;
  private MyClass _objMyObject;

  private void Page_Load(object sender, System.EventArgs e)
  {
   _objMyObject = new MyClass();
  }

  //實現ITransfer介面
  public MyClass MyObject
  {
   get
   {
    return this._objMyObject;
   }
   set
   {
    this._objMyObject = value;
   }
  }

  /// <summary>
  /// 響應按鈕事件
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void btnSend_Click(object sender, System.EventArgs e)
  {
   this.MyObject.Message = "test";

   //調用Server.Transfer(),轉向執行Receiver.aspx
   Server.Transfer("Receiver.aspx");
  }
 
  .
  .
  .
 }
}


編譯通過後,執行Sender.aspx,單擊btnSend按鈕,就可以看到執行結果了:Receiver.aspx頁面拿到了MyObject對象,並且在頁面上顯示出MyObject.Message的值為“test”;

需要完整Project源碼請聯絡作者: szumic@hotmail.com

 



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。