.net如何实现页面间的参数传递

2023-11-19

使用QueryString
使用QuerySting在页面间传递值已经是一种很老的机制了,这种方法的主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在浏览器的地址栏上的(不安全),同时又不能传递对象,但是在传递的值少而安全性要求不高的情况下,这个方法还是一个不错的方案。使用这种方法的步骤如下:
1,使用控件创建web表单(form)
2,创建可以返回表单的按钮和链接按钮
3,在按钮或链接按钮的单击事件里创建一个保存URL的字符变量
4,在保存的URL里添加QueryString参数
5,使用Response.Redirect重定向到上面保存的URL
下面的代码片断演示了如何实现这个方法:
源页面代码:
private void Button1_Click
(object sender, System.EventArgs e)
{
string url;
url="anotherwebform.aspx?name=" + TextBox1.Text + "&email=" + TextBox2.Text;
Response.Redirect(url);
}
目标页面代码:
private void Page_Load
(object sender, System.EventArgs e)
{
Label1.Text=Request.QueryString["name"];
Label2.Text=Request.QueryString["email"];
}

使用Session变量
使用Session变量是可以在页面间传递值的的另一种方式,在本例中我们把控件中的值存在Session变量中,然后在另一个页面中使用它,以不同页面间实现值传递的目的。但是,需要注意的是在Session变量存储过多的数据会消耗比较多的服务器资源,在使用session时应该慎重,当然了,我们也应该使用一些清理动作来去除一些不需要的session来降低资源的无谓消耗。使用Session变量传递值的一般步骤如下:
1,在页面里添加必要的控件
2,创建可以返回表单的按钮和链接按钮
3,在按钮或链接按钮的单击事件里,把控件的值添加到session变量里
4,使用Response.Redirect方法重定向到另一个页面
5,在另一个页面提取session的值,在确定不需要使用该session时,要显式清除它
下面的代码片断演示了如何实现这个方法:
源页面代码:
private void Button1_Click
(object sender, System.EventArgs e)
{
//textbox1 and textbox2 are webform
//controls
Session["name"]=TextBox1.Text;
Session["email"]=TextBox2.Text;
Server.Transfer("anotherwebform.aspx");
}
目标页面代码:
private void Page_Load
(object sender, System.EventArgs e)
{
Label1.Text=Session["name"].ToString();
Label2.Text=Session["email"].ToString();
Session.Remove("name");
Session.Remove("email");
}

使用Server.Transfer
这个方法相比上面介绍的方法稍微复杂一点,但在页面间值传递中却是特别有用的,使用该方法你可以在另一个页面以对象属性的方式来存取显露的值,当然了,使用这种方法,你需要额外写一些代码以创建一些属性以便可以在另一个页面访问它,但是,这个方式带来的好处也是显而易见的。总体来说,使用这种方法是简洁的同时又是面向对象的。使用这种方法的整个过程如下:
1,在页面里添加必要的控件
2,创建返回值的Get属性过程
3,创建可以返回表单的按钮和链接按钮
4,在按钮单击事件处理程序中调用Server.Transfer方法转移到指定的页面
5,在第二个页面中,我们就可以使用Context.Handler属性来获得前一个页面实例对象的引用,通过它,就可以使用存取前一个页面的控件的值了
以下代码综合实现上述步骤过程的代码:
源页面代码:
把以下的代码添加到页面中
public string Name
{
get
{
return TextBox1.Text;
}
}

public string EMail
{
get
{
return TextBox2.Text;
}
}
然后调用Server.Transfer方法
private void Button1_Click
(object sender, System.EventArgs e)
{
Server.Transfer("anotherwebform.aspx");
}
目标页面代码:
private void Page_Load
(object sender, System.EventArgs e)
{
//create instance of source web form
WebForm1 wf1;
//get reference to current handler instance
wf1=(WebForm1)Context.Handler;
Label1.Text=wf1.Name;
Label2.Text=wf1.EMail;
}

在ASP.NET 2.0中启用了跨页面传送功能,其功能和用法在以后在做介绍!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.net如何实现页面间的参数传递 的相关文章

  • 阻止注销页面后的后退按钮

    我有 php 注销页面 当用户单击注销链接时 请参阅此页面并重定向到索引页面 但是当单击后退按钮时 我会看到带有用户数据的上一页 当然 当我刷新页面时 我看不到以前的页面和数据 我在单击注销并单击后退按钮后检查了其他代码 drupal 但我
  • 负载平衡集群中的 PHP 会话 - 如何?

    好的 我得到了这个完全罕见的负载平衡 PHP 网站的独特场景 令人遗憾的是 它过去没有进行负载平衡 现在我们开始遇到问题 目前唯一的问题是 PHP 会话 当然 一开始没有人想到这个问题 因此 PHP 会话配置保留为默认值 因此 两台服务器都
  • 找不到 Microsoft.Office.Interop Visual Studio

    我正在开发一个使用 C 发送电子邮件的应用程序 该应用程序将能够使用邮件模板等 问题是我无法找到任何 Office Interop 引用 这意味着我无法使用 Outlook 我的计算机上安装了 Office 但我也尝试从此链接安装 PIAh
  • 在 C# 中使用通配符解析相对路径

    在 C 中 如果我有一个目录路径和一个带通配符的相对文件路径 例如 c foo bar and blah cpp 有没有一种简单的方法来获取绝对文件路径列表 例如 c foo blah a cpp c foo blah b cpp 背景 有
  • 使用实体框架重叠约会

    我将 asp net mvc 与实体框架一起使用 我有一个包含 startat 字段 endat 字段和 roomid 字段 称为 SpaceConfigurationId 的约会列表 并且希望查找给定房间已重复预订的约会列表 可以假设 e
  • c#.NET 和 sprintf 语法

    这段代码如何翻译成 C 具体来说是如何sprintf用C 实现 string output The user s logged in string loggedIn is string loggedOut isn t if TheUser
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 如何根据给定的点生成热图

    我想生成 Windows 形式的热图 我有一组点作为输入 如何以最简单的方式做到这一点 谢谢 基于此处已有的答案 此方法允许您指定Colors您希望用作最大和最小颜色 private Color HeatMapColor double va
  • HttpWebRequest/HttpResponse:如何在响应中发送数据?

    我有一个客户端和一个服务器 在客户端我有 HttpWebRequest request HttpWebRequest WebRequest Create http localhost fa Default aspx request Meth
  • 如何终止会话或会话 ID (ASP.NET/C#)

    当用户单击注销按钮时 如何销毁会话 会话 名称 我正在 MSDN 上查看 ASP NET API Reference 它似乎没有太多信息 看来还是比较有限的 但我找不到 ASP NET 类等的任何其他页面 我努力了 Session Aban
  • 如何在完成之前从 ReplaySubject 获取最新值

    我需要一种方法来获取添加到 ReplaySubject 中符合特定条件的最新项目 下面的示例代码完成了我需要它做的事情 但感觉不是正确的方法 static void Main string args var o new ReplaySubj
  • 如何拦截 Boo 中的方法调用?

    红宝石有method missing Python有getattr Boo 是否提供了一些可以用来拦截方法调用的东西 是的 布有IQuackFu http docs codehaus org pages viewpage action pa
  • 为什么 new String("Hello") 在 C# 中无效?

    制作背后的逻辑 原因是什么 String s new String Hello World 在 C 中非法 错误是 string String char 的最佳重载方法匹配有一些无效参数 我对 API 文档不感兴趣 我感兴趣的是为什么这是非
  • 如何有效确保小数值至少有 N 位小数

    我想在进行算术运算之前有效地确保十进制值至少有 N 个位置 在下面的示例中 3 显然我可以格式化 0 000 然后解析 但它的效率相对较低 我正在寻找一种避免与字符串转换的解决方案 我尝试过以下解决方案 decimal d 1 23M d
  • 如何消除字符串中的所有换行符?

    我需要删除字符串中出现的所有换行符 来自数据库 我使用下面的代码来做到这一点 value Replace r n Replace n Replace r 我可以看到至少有一个角色的行为就像行尾一样幸存了下来 字符代码是8232 http w
  • 自定义代码访问安全属性

    我创建了以下属性 Serializable AttributeUsage AttributeTargets Class AttributeTargets Method AllowMultiple true Inherited true pu
  • 是否可以在 IIS7 Express 中使用自定义主机标头/绑定?

    我正在尝试配置一个新的ASP NET MVC3 using IIS7快递 在我的本地开发机器上 使用自定义域名 eg 我的本地开发机器 打开我的网络浏览器 goto http dev www mydomain com http dev ww
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • PHP session_regenerate_id 和黑莓浏览器

    问候 我正在开发一个登录系统 并陷入了黑莓浏览器身份验证的困境 他们似乎对 PHP 的 session regenerate id 有问题 有人可以建议替代方案吗 以下是身份验证和登录脚本 UPDATE看来会话一般都不起作用 拿出 sess

随机推荐

  • 《Centos7——logstash启动报错》

    logstash启动报错 root localhost systemctl start logstash Failed to start logstash service Unit not found 解决方法 root localhost
  • python入门指南

    python入门指南 python是一门简单易学且功能强大的编程语言 它拥有高效的高级数据结构 并且能够简单而又高效的方式进行面向对象编程 python是一门解释性语言 因为无需编译和链接 在开发中节省时间 使用python解释器 调用py
  • docker容器无法启动, no space left on device

    背景 通过jekens 部署服务 发现部署失败 后通过手动拉取镜像发现直接报错 报错大致意思就是没有剩余可用空间 复现路径 如下操作 启动容器docker start 3ad663158cf6 报错 Error response from
  • Free C, C++ Compilers(免费的C/C++编译器)

    以下内容来源于 http www programmerworld net resources c compiler htm 1 Free Microsoft eMbedded Visual C Microsoft eMbedded Visu
  • 一分钟搞定微信小程序定位(wx.getLocation)功能

    欢迎大家来到我的一分钟系列 跟大家安利一分钟系列主要让大家快速完成一个功能少踩不必要的坑 先完成功能再悟其中的原理 这期主要为大家提供微信小程序的定位功能 换不多说 直接上干货 首先微信官方提供的wx getLocation 应用之后发现这
  • python采集keep运动数据

    我国2009年确立 全民健身日 2012年 广泛开展全民健身运动 写入十八大报告 到2014年上升为国家战略 全民健身的分量越来越重 推动全民健身和全民健康深度融合 通过全民健身实现全民健康 全民健身运动在我国越来越普及 每天清晨和傍晚时分
  • Umi+Dva初印象<基础应用,结构,流转逻辑>

    目录 前言 知识储备 generator函数 Dva初识 实际交互 函数式组件 class组件 前言 项目初始为umi脚手架进行初始化 lt 初始化过程 http t csdn cn cuTaY gt 工程中加载了umi自带的antd ui
  • 记一次开源PR

    提示 不要懒得看英文文档 要认真看别人的贡献文档 否则会浪费更多的时间 开源PR一般流程 1 远程仓库fork 2 你得发现bug或有优化修改 提交到fork的仓库 3 提issue 沟通 4 提PR 5 机器审核 修改问题 6 等待人工审
  • 【微信支付】分享一个失败的项目

    这个项目是去年做的 开始客户还在推广 几个月后发现服务器已经关掉了 这是一个发图片猜谜语的应用 用户猜对了分红包 所得奖金可以提现 开发的时候对需求都不太看好 觉得用户粘性太低了 今天就把所有的程序拿了出来 供有兴趣的伙伴玩耍 用户从公众号
  • C++Primer第三章习题

    3 2 编写一段程序从标准输入中一次读入一整行 然后修改该程序使其一次读入一个词 include
  • UITableViewCell 设置单元格选中后只显示一个打勾的状态

    UITableViewCell 设置单元格选中后只显示一个打勾的状态 2013 06 28 22 28 33 转载 标签 ios tableviewcell it 分类 iOS 今天做个表格 突然发现在选中某行时打勾 再次选中其它行时 上次
  • (最简单详细)关于nginx配置解决页面刷新以后404 Not Found和403 Forbidden

    仔细看我下面所说 每一步都是坑 1 页面刷新404 Not Found 1 问题原因 web单页面开发模式 只有一个index html入口 其他路径是前端路由去跳转的 nginx没有对应这个路径 所以就会报404了 2 解决方法 增加tr
  • Linux中常见目录操作和文件操作命令

    pwd命令 用于查看显示当前所在目录 ls命令 用于显示指定目录中的文件或子目录的信息 cd命令 用于切换当前用户所在的工作目录 其中路径可以是绝对路径 也可以是相对路径 mkdir命令 用于创建目录 rm命令 用于删除文件或目录 touc
  • QQ被盗后,如何找回好友

    QQ被盗了 可以再申请一个号码 但是QQ里面的好友却无法再申请了 特别是一些重要的联系人也丢失了 下面的方法可以帮你找回好友 1 确认电脑中保存着被盗QQ号码的登录记录 也就是QQ安装目录下的包含这个号码为目录名的子目录 如果你采用的是网吧
  • Ubuntu下工作空间的创立以及思岚系列激光雷达的使用(详细)和驱动安装及地图创建

    环境 ubuntu20 04 双系统 其他环境也是可以的 首先我们需要先创建rplidar ros的工作空间 这里为推荐从源码处下载 我将介绍两种创建工作空间的方法 1 直接创建 比较简单 个人推荐 mkdir p catkin ws sr
  • qt, connect参数,Qt::DirectConnection,Qt::QueuedConnection

    connect用于连接qt的信号和槽 在qt编程过程中不可或缺 它其实有第五个参数 只是一般使用默认值 在满足某些特殊需求的时候可能需要手动设置 Qt AutoConnection 默认值 使用这个值则连接类型会在信号发送时决定 如果接收者
  • 期货开户手续费的组成和收费模式

    期货公司的费用 公开透明 不会私自提高费率 A级别的期货公司 不会私自提高期货投资者的交易费率 不会私自提高期货投资者的保证金比例 说一下投资者最关系的费率问题 期货投资交易的手续费是由两部分组成 1 交易所手续费 这个是固定标准也是市场上
  • linux安装nacos集群

    一 前置环境 java nacos mysql 3台vm 192 168 5 171 192 168 5 172 192 168 5 181 一台配置好其他都一样的 1 下载安装包 https github com alibaba naco
  • C++ OPENCV 获得两矩形的交集矩形

    获得两个矩形的交集 该交集类型也是矩形 这种情况就范围交集的矩形 蓝色部分 这种情况返回 cv Rect cv Point 0 0 cv Point 0 0 欢迎测试 提BUG brief 获得两个矩形的交集 param rect1 rec
  • .net如何实现页面间的参数传递

    使用QueryString使用QuerySting在页面间传递值已经是一种很老的机制了 这种方法的主要优点是实现起来非常简单 然而它的缺点是传递的值是会显示在浏览器的地址栏上的 不安全 同时又不能传递对象 但是在传递的值少而安全性要求不高的