程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> ASP.NET頁面間傳遞對象的另類方法

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

編輯:關於C#
 

我們知道,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”;
 

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved