asp.net Context.Handler 页面间传值方法第1/2页

一、目前在ASP.NET中页面传值共有这么几种方式:

1、表单提交,

<form action= "target.aspx" method = "post" name = "form1">

<input name = "param1" value = "1111"/>

<input name = "param2" value = "2222"/>

</form>

....

form1.submit();

....

此种方在ASP。NET中无效,因为ASP。NET的表单总是提交到自身页面,如果要提交到别一页面,需要特殊处理。

2、<A href="target.aspx?param1=1111&param2=2222">链接地址传送</A>

接收页面: string str = Request["param1"]

3、Session共享

发送页面:Session("param1") = "1111";

按收页面 string str = Session("param1").ToString();

4、Application共享

发送页面: Application("param1") = "1111";

按收页面: string str = Application("param1").ToString();

此种方法不常使用,因为Application在一个应用程序域范围共享,所有用户可以改变及设置其值,故只应用计数器等需要全局变量的地方。

5、Cookie

6、Response.Redirect()方式

Response.Redirect("target.aspx?param1=1111&param2=2222")

接收页面: string str = Request["param1"]

7、Server.Transfer()方式。

Server.Transfer("target.aspx?param1=1111&param2=2222")

接收页面: string str = Request["param1"]

二、如果在两个页面间需要大量的参数要传传递,如数据查询等页面时,用1 - 6的方法传值及其不便,而第 7 种方法确有一独特的优势!但使用该方法时需要一定的设置,现简单介绍一下该方法的使用方式:

以查询数据页面为例:

在查询页面中设置如下公有属性(QueryPage.aspx): public class QueryPage : System.Web.UI.Page

{

protected System.Web.UI.WebControls.TextBox txtStaDate;

protected System.Web.UI.WebControls.TextBox txtEndDate;

/**//**//**//// <summary>

/// 开始时间

/// </summary>

public string StaDate

{

get{ return this.txtStaDate.Text;}

set{this.txtStaDate.Text = value;}

}

/**//**//**//// <summary>

/// 结束时间

/// </summary>

public string EndDate

{

get{ return this.txtEndDate.Text;}

set{this.txtEndDate.Text = value;}

}

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

{

Server.Transfer("ResultPage.aspx"); //注意:使用ResultPage.aspx来接收传递过来的参数

}

}

在显示查询结果页面(ResultPage.aspx):

public class ResultPage : System.Web.UI.Page

{

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

{

//转换一下即可获得前一页面中输入的数据

QueryPage queryPage = ( QueryPage )Context.Handler;    //注意:引用页面句柄

Response.Write( "StaDate:" );

Response.Write( queryPage.StaDate );

Response.Write( "<br/>EndDate:" );

Response.Write( queryPage.EndDate );

}

}

三、如果有许多查询页面共用一个结果页面的设置方法:

在这种方式中关键在于“ QueryPage queryPage = ( QueryPage )Context.Handler; ”的转换,只有转换不依赖于特定的页面时即可实现。

如果让所有的查询页面都继承一个接口,在该接口中定义一个方法,该方法的唯一作用就是让结果页面获得构建结果时所需的参数,就可实现多页面共享一个结果页面操作!

1、先定义一个类,用该类放置所有查询参数:(*.cs) /**//// <summary>

/// 结果页面中要用到的值

/// </summary>

public class QueryParams

{

private string staDate;

private string endDate;

/**//**//**//// <summary>

/// 开始时间

/// </summary>

public string StaDate

{

get{ return this.staDate;}

set{this.staDate = value;}

}

/**//**//**//// <summary>

/// 结束时间

/// </summary>

public string EndDate

{

get{ return this.endDate;}

set{this.endDate = value;}

}

}

2、接口定义:

/**//// <summary>

/// 定义查询接口。

/// </summary>

public interface IQueryParams

{

/**//**//**//// <summary>

/// 参数

/// </summary>

QueryParams Parameters{get;}

}

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

/**//// <summary>

///查询页面,继承接口

/// </summary>

public class QueryPage : System.Web.UI.Page, IQueryParams

{

protected System.Web.UI.WebControls.TextBox txtStaDate;

protected System.Web.UI.WebControls.TextBox txtEndDate;

private QueryParams queryParams;

/**//**//**//// <summary>

/// 结果页面用到的参数

/// </summary>

public QueryParams Parameters

{

get

{

return queryParams;

}

}

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

{

//赋值

queryParams = new QueryParams();

queryParams.StaDate = this.txtStaDate.Text;

queryParams.EndDate = this.txtEndDate.Text

Server.Transfer("ResultPage.aspx");

}

}

4、别外的页面也如此设置

当前1/2页 12下一页阅读全文

(0)

相关推荐

  • asp.net Context.Handler 页面间传值方法第1/2页

    一.目前在ASP.NET中页面传值共有这么几种方式: 1.表单提交, <form action= "target.aspx" method = "post" name = "form1"> <input name = "param1" value = "1111"/> <input name = "param2" value = "2222&quo

  • JAVASCRIPT实现的WEB页面跳转以及页面间传值方法

    但有时候,需要当某事件触发时,我们先做一些操作,然后再跳转,这时,就要用JAVASCRIPT来实现这一跳转功能. 下面是具体的做法: 一:跳转到新页面,并且是在新窗口中打开时: 复制代码 代码如下: function gogogo() { //do someghing here... window.open("test2.html"); } window是一个javascript对象,可以用它的open方法,需要注意的是,如果这个页面不是一相相对路径,那么要加http://,比如: 复

  • asp.net 页面间传值方法小结

    1.表单提交, 复制代码 代码如下: <form action= "target.aspx" method = "post" name = "form1"> <input name = "param1" value = "1111"/> <input name = "param2" value = "2222"/> </for

  • asp.net WebForm页面间传值方法

    ASP.NET WEB FORMS 给开发者提供了极好的事件驱动开发模式.然而这种简单的应用程序开发模式却给我们带来了一些小问题,举个例子,在传统的ASP应用程序中,你能够通过POST方法很容易的把一个值或多个值从一个页面传送到另一个页面(request()/request.form()/request.querystring()),用同样的方法在ASP.NET中实现有点麻烦.在这里,通过其他方式来解决这种情形.ASP.NET为我们提供了三种方式,一种是可以通过用QueryString来传送相应

  • JavaScript实现在页面间传值的方法

    本文实例讲述了JavaScript实现在页面间传值的方法.分享给大家供大家参考.具体如下: 问题如下: 在 a.html 页面中,<form> 的 onsubmit 事件调用一个方法 foo( ),打开 b.html 页面的同时给 b.html 传递参数.方法 foo( ) 中需要传递变量参数到 b.html 页面,在 b.html 页面接受参数值,但不能使用服务器端技术. 解决代码如下: a.html页面如下: <html> <head> <title>

  • 微信小程序页面间传值的实现方法示例

    小程序页面间传值 大家晚上好,说晚上好是因为是在晚上写的,说这句话是因为这句话开篇不那么突然.那么小程序的页面间传值,在我使用这段时间里,我就非常的主观的把它们分为wx.navigateTo和非wx.navigateTo的,因为wx.navigateTo有一个事件参数event,我从当前页跳转到下一页,如果需要能返回,我都用的wx.navigateTo,那这个event作用嘛就是可以接收,下一页返回回来的参数的.像

  • JSP页面间传值问题实例简析

    本文实例分析了JSP页面间传值问题.分享给大家供大家参考,具体如下: 其中最简单的要数<a>标签里面的href来传值了, 在a.jsp中写: <a href="b.jsp?name1=值"></a> 然后在b.jsp中接收: <% String name2 = new String(request.getParameter("name1").getBytes("ISO-8859-1"),"GBK

  • asp.net计算每个页面执行时间的方法

    本文实例讲述了asp.net计算每个页面执行时间的方法.分享给大家供大家参考.具体分析如下: 这里的asp.net代码可实现计算每个页面的执行时间,无需要修改页面的相关代码,这段代码会给所有的页面统一加上执行时间显示 public class PerformanceMonitorModule : IHttpModule { public void Init(HttpApplication context) { context.PreRequestHandlerExecute += delegat

  • 微信小程序页面间传值与页面取值操作实例分析

    本文实例讲述了微信小程序页面间传值与页面取值操作.分享给大家供大家参考,具体如下: 微信小程序页面间传值 1.js页面间的传值:url: ' 路径 ? 值='+ 获取该页面取值, 实例1: pageSkip :function(){ wx.navigateTo({ url: '/page/login/facte?shopsName='+this.data.shopsName, }) }, 实例2: pageSkip :function(){ wx.navigateTo({ url: '/page

  • iOS通过block在两个页面间传值的方法

    一.功能需求 在第一个页面中有一个button和一个label,label上默认显示"哈哈",点击button进入第二个页面.在第二个页面有一个UITextField和一个button2,点击button2回到第一个页面,但同时第一个页面的label上显示的文字修改为刚刚在UITextField写进去的文字. 二.先定义block 在要传值得那个页面定义含有block参数的方法,即在第二个页面的.h文件中定义: 重新定义:typedef void (^ReturnTextBlock)(

随机推荐