ASP.NET 网页之间传递值

如果您的应用程序从一个 ASP.NET 网页重定向(导航)到另一个 ASP.NET 网页,您经常希望将信息从源页传递到目标页。例如,您可能具有一个页面,用户可以从中选择要购买的商品。当用户提交该页时,您希望调用其他页,以处理用户输入的信息。

可以采用各种方式在页之间传递信息,某些方式取决于重定向的方式。包括以下选项:

  • 使用查询字符串,该字符串可将信息追加到目标页的 URL 上。使用 HyperLink 控件将导航内置于页中时,或使用 Redirect 方法以编程方式重定向到其他页时,都可以使用查询字符串。

    即使这些页不在同一个 Web 应用程序中,也能使用查询字符串传递值;如果要将信息传递到非 ASP.NET 网页的页中,也可以采取这种方式。如果目标页是一个 ASP.NET 网页,则可从 HttpRequest 对象的 QueryString 属性中读取查询字符串的值。

    注意:

    请永远不要使用查询字符串传递敏感数据,因为查询字符串中的信息对用户是可见的,而且很容易被修改,因此会带来潜在的安全风险。

  • 使用会话状态可以存储信息,随后可从当前应用程序的所有 ASP.NET 网页中访问这些信息。但是,这种方法会占用服务器内存,并且其信息将在会话过期之前一直存储在内存中,因而与直接向下一页传递信息相比,其系统开销更大。有关详细信息,请参见 ASP.NET 状态管理概述。

  • 在目标页上,直接读取源页中的控件值和公共属性值。此策略适用于以下两种情况:当源页跨页发送到目标页时(有关更多信息,请参见如何:将 ASP.NET 网页发送到另一页),以及调用 Transfer 方法在服务器上将执行从源页转到目标页时。将在本主题中对从源页直接读取值的策略进行说明。

从源页获取公共属性值

如果源页专门设计为与目标页共享信息,并且这两个页都是 ASP.NET 网页,则可以在源页中添加公共属性,用于公开要在页之间共享的信息。然后,可以在目标页中读取这些属性的值。

注意:

仅当这两个页位于同一个 Web 应用程序中时,才能在目标页中读取源页属性。

从源页获取公共属性值

  1. 在源页中,创建一个或多个公共属性。

    下面的代码示例演示一个名为 CurrentCity 的属性,该属性公开名为 textCity 的 TextBox 控件的值。

    Visual Basic 复制代码
    Public ReadOnly Property CurrentCity() As StringGetReturn textCity.TextEnd Get
    End Property

     

    C# 复制代码
    public String CurrentCity
    {get{return textCity.Text;}
    }
    注意:

    在源页上创建的、主要用于为跨页发送公开值的属性通常是只读属性。尽管源页可以包含公共读/写属性,但是通过目标页属性设置源页属性一般没有任何效果,因为不会保留此值。

  2. 在目标页上,添加一个指向源页的 @ PreviousPageType 页面指令。

    下面的代码示例演示一个引用名为 SourcePage.aspx 的源页的 PreviousPageType 指令。

     复制代码
    <%@ PreviousPageType VirtualPath="~/SourcePage.aspx" %> 

    PreviousPageType 指令会导致页的 PreviousPage 属性被类型化为源页类。

  3. 在目标页代码中,使用 PreviousPage 属性的强类型成员读取源代码属性。

    下面的代码示例读取源页中定义的 CurrentCity 属性的值。

    Visual Basic 复制代码
    Label1.Text = PreviousPage.CurrentCity

     

    C# 复制代码
    Label1.Text = PreviousPage.CurrentCity;

从同一个应用程序的源页中获取控件信息

如果源页和目标页都是 ASP.NET 网页,并且位于同一个 Web 应用程序中,则可以在目标页中读取源页中的控件值。如果源页不公开包含所需信息的公共属性,则可以使用此策略。

从同一个应用程序的源页中获取控件值

  • 在目标页中,通过使用目标页的 PreviousPage 属性获取对源页的引用,然后调用 FindControl 方法获取对所需控件的引用。

    下面的代码示例获取源页的 TextBox1 控件的值,并将其显示在名为 Label1 的控件中:

    Visual Basic 复制代码
    If Not Page.PreviousPage Is Nothing ThenDim SourceTextBox As TextBoxSourceTextBox = CType(PreviousPage.FindControl("TextBox1"), _TextBox)If Not SourceTextBox Is Nothing ThenLabel1.Text = SourceTextBox.TextEnd If
    End If

     

    C# 复制代码
    if (Page.PreviousPage != null)
    {TextBox SourceTextBox = (TextBox)Page.PreviousPage.FindControl("TextBox1");if (SourceTextBox != null){Label1.Text = SourceTextBox.Text;}
    }
    注意:

    FindControl 方法用于查找当前命名容器中的控件。如果正在查找的控件位于其他控件中(通常位于模板中),则必须首先获取对该容器的引用,然后搜索该容器,以查找要获取的控件。

从其他应用程序的源页中获取发送信息

如果源页和目标页不在同一个 Web 应用程序中,则可以在目标页中读取源页的发送的值。如果目标页是 ASP.NET 网页,但源页不是,则也可以使用此技术。注意,只能获取发送的值,而无法读取页中的任意控件的值。

从其他应用程序的源页中获取控件值

  • 在目标页中,读取 Form 集合,此集合返回名称/值对的字典(每一个发送的值对应一个名称/值对)。

    下面的代码示例演示源页中每个发送的控件的 ID 和值,并在名为 Label1 的标签中显示发送的值。

    注意:

    ASP.NET 网页中的发送信息包括隐藏字段的值,如 __VIEWSTATE__EVENTTARGET__EVENTARGUMENT,这些值在页中进行内部处理时使用。下面的代码示例排除以两个下划线 (__) 作为开头命名的发送字段的值。

    Visual Basic 复制代码
    Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) _Handles Me.LoadDim displayValues As New StringBuilder()Dim postedValues As NameValueCollection = Request.FormDim nextKey As StringFor i As Integer = 0 To postedValues.AllKeys.Length - 1nextKey = postedValues.AllKeys(i)If nextKey.Substring(0, 2) <> "__" ThendisplayValues.Append("<br>")displayValues.Append(nextKey)displayValues.Append(" = ")displayValues.Append(postedValues(i))End IfNextLabel1.Text = displayValues.ToString()
    End Sub

     

    C# 复制代码
    void Page_Load(object sender, EventArgs e)
    {System.Text.StringBuilder displayValues = new System.Text.StringBuilder();System.Collections.Specialized.NameValueCollection postedValues = Request.Form;String nextKey;for(int i = 0; i < postedValues.AllKeys.Length - 1; i++){nextKey = postedValues.AllKeys[i];if(nextKey.Substring(0, 2) != "__"){displayValues.Append("<br>");displayValues.Append(nextKey);displayValues.Append(" = ");displayValues.Append(postedValues[i]);}}Label1.Text = displayValues.ToString();
    }

转载于:https://www.cnblogs.com/randomize/archive/2013/06/13/3134352.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/408743.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机控制面板图标怎么删除,电脑如何找回消失的“添加或删除程序”图标

&#xfeff;‍我们会根据需要在自己的电脑上下载一些应用程序&#xff0c;但是也会经常卸载掉一些不用的应用程序。这时我们只要打开控制面板中的“添加或删除程序”就可以对已安装在电脑上的软件进行卸载。不过有用户发现自己的电脑上找不到“添加或删除程序”图标&#xff0…

特征工程(完)

机器学习入门系列&#xff08;2&#xff09;–如何构建一个完整的机器学习项目&#xff0c;第六篇&#xff01; 该系列的前五篇文章&#xff1a; 机器学习入门系列(2)–如何构建一个完整的机器学习项目(一)机器学习数据集的获取和测试集的构建方法特征工程之数据预处理&#…

Linux/CentOS下安装Apache/SVN/Subversion图文详解教程

Linux(CentOS)下安装ApacheSubversion(图文教程) 服务器版本和安装软件服务器版本&#xff1a;RedHatCentOS 5.5 32 bit 安装软件&#xff1a;apr-1.3.5.tar.gz&#xff08;APR(Apache portable Run-time libraries&#xff0c;Apache可移植运行库)的目的如其名称一样&#xff…

计算机专业自然辩证法期末论文,清华大学自然辩证法-期末论文.docx

清华大学自然辩证法-期末论文论道家自然观对于现代科学的启发摘要&#xff1a;道家是中国古代的重要思想学派&#xff0c;而其自然观在中国古代也独树一帜&#xff0c;流传广泛&#xff0c;甚至于对两千多年后的现在仍具有很强的指导意义。本文通过阐明道家自然观的深刻内涵&am…

[Github项目推荐] 机器学习 Python 知识点速查表

2019年第 21 篇文章&#xff0c;总第 45 篇文章今天推荐三份知识点的速查表&#xff0c;分别是机器学习、深度学习和 Python 三方面的知识点速查表。其中前两份都是来自斯坦福大学的课程&#xff0c;分别是 CS229 机器学习 和 CS230 深度学习课程。1. CS229 机器学习速查表传送…

(RMAN)使用恢复目录数据库执行RMAN步骤

原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://407882.blog.51cto.com/397882/212142 我想建立一个RMAN备份机制&#xff0c;本机为目标数据库&#xff0c;sid为orcl10的数据库为恢复目…

计算机一级115,计算机一级BASIC模拟115.doc

PAGEPAGE 1[模拟] 计算机一级BASIC模拟115选择题(每小题1分&#xff0c;共20分)第1题&#xff1a;计算机模拟是属于( )类计算机应用领域?A.科学计算B.信息处理C.过程控制D.现代教育参考答案&#xff1a;D答案解析&#xff1a;计算机作为现代教学手段在教育领域中应用得越来越广…

常用机器学习算法汇总比较(上)

机器学习入门系列&#xff08;2&#xff09;–如何构建一个完整的机器学习项目&#xff0c;第七篇&#xff01; 该系列的前六篇文章&#xff1a; 机器学习入门系列(2)–如何构建一个完整的机器学习项目(一)机器学习数据集的获取和测试集的构建方法特征工程之数据预处理&#…

GZIP pre-compression

GZIP pre-compressionPre_compression 并不是一个nginx必须安装的module. Nginx –V 可以显示出当前nginx已经安装的module. 它的作用是: we want to serve and effectively reduce the computation power we waste to compress the file each and every time. This recipe wil…

计算机考试单招考试面试,单招计算机面试题.docx

文档介绍&#xff1a;、选择题(每题 3分&#xff0c;共90 分)1、 计算机系统分为两大系统( )D、输入和输出)A主机和服务器 B、主机箱和显示器 C、硬件系统和软件系统2、 在 Windows98 默认环境中&#xff0c;下列哪种方法不能运行应用程序(A、 用鼠标左键双击应用程序图标B、 用…

常用机器学习算法汇总(中)

机器学习入门系列&#xff08;2&#xff09;–如何构建一个完整的机器学习项目&#xff0c;第八篇&#xff01; 该系列的前七篇文章&#xff1a; 机器学习入门系列(2)–如何构建一个完整的机器学习项目(一)机器学习数据集的获取和测试集的构建方法特征工程之数据预处理&#…

iOS7初体验(2)——单元测试

在Xcode 4.6及以前的版本&#xff0c;一直觉得单元测试这部分功能做得很鸡肋&#xff0c;用起来感觉很别扭。这一次Xcode 5.0默认就引入了单元测试&#xff0c;赶快来看看看相比以前的版本有什么提升吧&#xff01;~_~ 1. 首先打开上一节示例用的项目&#xff0c;当然&…

大学计算机基础实训excel,大学计算机基础实训指导书

摘要&#xff1a;《大学计算机基础实训指导书》分为8章,内容包括第1章介绍了计算机基础知识,主要内容包括计算机的发展,计算机系统的组成,信息在计算机中的表示等;第2章介绍了操作系统基础知识,主要内容包括操作系统的发展,种类,功能,以及windows XP操作系统的使用方法,第3章介…

Python-100例(5-6) 排序斐波那契数列

前面分享的四道题目如下&#xff1a; Python-100 | 练习题 01 & 列表推导式Python-100 练习题 02Python-100 练习题 03 完全平方数Python-100 练习题 04 判断天数 这次是分享 Python-100 例的第五和第六题&#xff0c;分别是排序和斐波那契数列问题&#xff0c;这两道题目…

【Linux小技巧】开启关闭蜂鸣声

当在shell下按错键时&#xff0c;笔记本会发出滴滴滴的蜂鸣声&#xff0c;声音比较烦人&#xff0c;这里记录下关闭&开启蜂鸣声的指令: 如果指令输入后 not permitted, 请键入su 登录root权限后再执行指令 关闭蜂鸣声:rmmod pcspkr     开启蜂鸣声:modprobe pcspkr pcs…