首页 > 编程 > .NET > 正文

ASP.NET页面间传递对象的另类方法

2024-07-10 13:06:16
字体:
来源:转载
供稿:网友

 我们知道,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源码请联系作者: [email protected]

 

菜鸟学堂:
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表