在 Web 窗体页之间传递值

原创 2004年07月21日 10:23:00

在很多时候,您将需要从一页定位到另一页,将值从一页传递到另一页。例如,可能有一页会提示用户提供名称和密码。当用户提交窗体时,您需要调用另一页对用户进行身份验证。

在页之间共享信息的方法有多种:

  • 使用查询字符串,它将信息追加到 URL 并将该 URL 传递到下一页。这种方法存在使信息可见的缺点。有关详细信息,请参阅 WebClient.QueryString 属性HttpRequest.QueryString 属性
  • 使用会话状态存储信息,使用户当前会话中的所有页都可以全局访问这些信息。但是,这种方法会占用服务器内存,并且信息仅在会话过期之前存储,从而比向下一页传递信息具有更多的系统开销。有关详细信息,请参阅 Web 窗体状态管理
  • 使用自定义页属性,然后从初始页重定向到目标页,此时仍可以读取旧页上的值。此策略在本主题中描述。

Web 窗体页是应用程序中的类,因此可以向处理任何类一样为它们创建属性。但是,由于 Web 窗体页实际上仅在执行页的过程中存在,它们的生命周期非常短。因此,Web 窗体页上属性的用途相当有限,因为它们仅在处理页的过程中存在。但是,如果使用特定的技术将控件从一页传递到另一页,后一页仍可以访问前一页上的属性。

在源页上创建可共享的值

  1. 在代码中,使用属性的标准语法声明页上的一项或多项只读属性。返回要向下一页传递的属性值。

    以下示例显示如何声明名为 Property1 的属性并将它的值设置为该页上文本框的值:

    ' Visual Basic Public ReadOnly Property Property1() As String Get Return TextBox1.Text End Get End Property 
  2. // C# 
  3. public string Property1 { get { return TextBox1.Text; } }
  4. 通过调用 Server 对象(HttpServerUtility 类)的 Transfer 方法调用下一页,并向其传递要将信息传递到的页的 URL。

    以下示例显示如何从事件处理程序中调用名为 WebForm2 的页(在同一项目中):

    ' Visual Basic Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Server.Transfer("Webform2.aspx") End Sub 
  5. // 
  6. C# private void Button1_Click(object sender, System.EventArgs e) { Server.Transfer("Webform2.aspx"); }

若要从所调用的页中获取第一页的属性值,请创建源页类的实例变量。然后可以向其分配 HTTP 对象(IHttpHandler 类的一个实例),即接收初始请求的对象。

在所调用的页中读取源页中的属性值

  1. 创建一个全局实例变量,它被类型化为源页的类。

    以下示例显示如何声明其类名称为 WebForm1 的页所表示的类型的变量:

    ' Visual Basic Public sourcepage as WebForm1 // C# public WebForm1 sourcepage;
  2. Page_Load 处理程序中,从 Context.Handler 对象(IHttpHandler 接口)中获取源页,然后向其分配在第 1 步创建的变量。必须将该处理程序对象转换为源页类的类型。
    注意 只应在该页首次运行(即首次从源页中调用该页)时执行此逻辑。
  3. 从源页中获取属性值,并按照使用任何对象属性的方式来使用这些属性值。
    注意 如果要在除第一页初始化阶段之外的任何页处理阶段中使用属性值,则务必要保存这些属性值(例如以视图状态保存)。有关详细信息,请参阅 Web 窗体状态管理介绍

    完整的 Page_Load 处理程序可能类似于如下所示:

    ' Visual Basic Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If Not Page.IsPostBack Then sourcepage = CType(Context.Handler, WebForm1) Label1.Text = sourcepage.Property1 End If End Sub
  4.  // C# 
  5. private void Page_Load(object sender, System.EventArgs e) 
  6. { 
  7. if (!IsPostBack)
  8. { 
  9. WebForm1 sourcepage = (WebForm1) Context.Handler; Label1.Text = sourcepage.Property1;
  10.  } 
  11. }

请参见

Web 窗体状态管理

VB.Net 两个窗体之间的传值及修改

在做机房收费系统,遇到这样一个问题:在上下机窗体(FrmLoadOnff)中,存在一个文本框(txtCountOnline)显示当前上机的学生数。在查询学生上机状态的窗体中,存在全部学生下机菜单(me...
  • XUJIAOlf
  • XUJIAOlf
  • 2013年11月26日 01:07
  • 7086

WebForm页面间传值方法

Asp.NET WEB FORMS 给开发者提供了极好的事件驱动开发模式。Asp .NET为我们提供了三种方式,一种是可以通过用QueryString来传送相应的值,再一种是通过session变量来传...
  • llxlett
  • llxlett
  • 2013年01月17日 13:01
  • 2782

Qt窗体之间相互传值的三种方式

1.使用QT中的Signal&Slot机制进行传值    我在mainwindow里面添加了一个textedit用来接收传递过来的值,dialog里面添加了一个ok按钮和一个lineedit,可以在l...
  • zbw1185
  • zbw1185
  • 2015年09月17日 11:30
  • 10537

北大青鸟S2JAVA_web机试题_网页之间传值

  • 2007年10月20日 20:14
  • 411KB
  • 下载

js实现页面与页面之间传值,js利用地址栏URL传值,利用H5 Web 存储 传值,利用JavaScript Cookie存储 传值

  • 2017年07月12日 16:40
  • 3KB
  • 下载

负责对象和页面控件之间值的传递

  • 2011年07月13日 19:07
  • 2.15MB
  • 下载

在两个ASP.NET页面之间传递值

  • 2009年11月16日 19:39
  • 4KB
  • 下载

ASP.NET页面之间传递值的几种方法

  • 2012年04月06日 17:39
  • 25KB
  • 下载

C# 不同Form之间值的传递

  • 2012年02月27日 10:13
  • 50KB
  • 下载

java web中jsp与servlet之间的跳转和传递参数

java web中jsp与servlet之间的跳转和传递参数 一、jsp跳转到servlet并传递参数:   在jsp中使用下列两种方式跳转到servlet    a> servlet的ur...
  • anxinliu2011
  • anxinliu2011
  • 2012年04月26日 21:03
  • 15664
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在 Web 窗体页之间传递值
举报原因:
原因补充:

(最多只允许输入30个字)