页面间传值的方式

2023-05-16

从一个页面转向另一个页面的请求方式有两种,Post和Get.

如果从原理上来探究他们的区别,涉及到Http传输协议的细节,这样深究下去,就成华为人干的事了,有空可以请教一下华为高人,我一个做企业软件的实在没那么多时间也没必要去研究那些东西,所以就看一下表象吧。

所有的人都知道如下区别:
1.Post传输数据时,不需要在URL中显示出来,而Get方法要在URL中显示。
2.Post传输的数据量大,可以达到2M,而Get方法由于受到URL长度的限制,只能传递大约1024字节.
3.Post顾名思义,就是为了将数据传送到服务器段,Get就是为了从服务器段取得数据.而Get之所以也能传送数据,只是用来设计告诉服务器,你到底需要什么样的数据.Post的信息作为http请求的内容,而Get是在Http头部传输的。

我们的form表单的method方法,有两个,post,get.它在页面传值的时候的区别也就是上面提到的三点.

先来看一下post方法.

这个方法在asp时代应该跟程序员打交道很多的,因为那时候没有现在的ViewState,每个页面要恢复原来的状态,都要将页面Post给自身,然后挨个取值,重新赋值.现在这些琐碎的事情都让ViewState代劳了.所以将页面post给自身的动作,在某种程度上已经被Asp.net的程序员们忘却了,所以Post也就被大部分的忽视了,这就是技术进步的双刃剑,带来方便的同时,蒙上你的眼睛。

ViewState必须包含在

的窗体下,而只要包含了"runat="server""的标志,就甭想Post到其他页面中去,为什么?老盖说,我的ViewState是保存当前页面状态的,你要转到其他页面,他说,不行,**不认识的参数.如果想Post一个窗体,咋办?有四种方式可供选择.

1.在页面上新建一个form,不要加上runat="server"的标志,当然在这个窗体下的控件也就不用想用Viewstate来传值了.当在其他有runat="server"的窗体的中的按钮事件中,手动调用新建form的submit() 函数.

传送页面代码如下:


<!--html代码
<form id="Form1" method="post" runat="server">
            <input id="btnTransfer" type="button"  οnclick="post();" runat="server">
            <input type="text" runat="server" id="SourceData">
        </form>
        <form id="forPost" method="post">
            <input type="text" runat="server" id="SourceData2">
        </form>
-->
<!--Script代码
<script language="JavaScript">
            function post()
            {
                forPost.action="DestinationPage.aspx";
                forPost.submit();
            }
        </script>
-->       

接收页面


string a=Request.Form["SourceData2"].ToString();

 

2.通过Session取值,在一个页面中赋值,在其他页面中共享,这个方式也被广泛应用,个人不倾向于用这种方式,我怕造成Session值的混乱无序,Session用来存一些公共的东西已经累得够呛了。

3.通过Context传值,在传送页面之前,将需要传递到其他页面的值存在Context中。示例代码如下:

传送页面


//点击某个button时触发
private void btnTransfer_ServerClick(object sender, EventArgs e)
         {
            Context.Items["SourceData"]=SourceData.Value;
            Server.Transfer("DestinationPage.aspx");
        }

 

接收页面


string a=Context.Items["SourceData"].ToString();

 

4.通过Server.Transfer的方式。
这个方式在方法三种已经用到了,不过可以在调用页面为要传递到被调用页面的值创建属性(当然可以直接将它设成public),这样就可以在其他页面访问了。

传送页面


//要传送的值
private 
System.Web.UI.HtmlControls.HtmlInputText SourceData;

public string getSourceData
{
  get
   {
    return SourceData.Value;
  }
}

//传送页面
Server.Transfer("DestinationPage.aspx");

 

接收页面


private SourceClass sourcePage;

sourcePage=(SourceClass)Context.Handler;
            string aa=sourcePage.getSourceData;

 

以上就是Post的在不同页面传递数据的方式了。
下面是get方法
我常用的是  传送页面


string aa=SourceData.Value;
            string bb=SourceData.Value;

            string url="DestinationPage.aspx?parameter1="+aa+"&parameter2="+bb;
            Response.Redirect(url,false);

 

接收页面


string aa=Request.QueryString["parameter1"].ToString();
            string bb=Request.QueryString["parameter2"].ToString();

 
至于 Response.Redirect(url,false)里的false都是Response.End()这个方法惹的祸,老盖说,写成false就好了,因为默认是true。我都转向其他页面了,还不让我终止原来页面的响应

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

页面间传值的方式 的相关文章

  • c++枚举字符串转换工具

    为什么会需要这样一个枚举转字符串 xff0c 字符串转枚举的工具 xff1f 在太多的工程中 xff0c 我们可能都需要将一些枚举 整形标记打到日志中去 xff0c 如果只打印数组 xff0c 那也不行啊 xff0c 出问题翻看日志 xff
  • AD16在PCB布局的时候如何批量复制布局布线!!

    本人也是看了很多博主的帖子反反复复推敲 xff0c 最后发现有的博主没讲到关键部分所以在批量复制布局的时候总是事与愿违 话不多说请看招 xff01 第一步选中需要复制的布局 xff01 如图所示 第二步 复制选中布局的 offset Cha
  • Atcoder abc250 题解 (A~G)

    A Adjacent Squares xff08 枚举 xff09 枚举一下 xff0c 满足题意则ans 43 43 即可 cin span class token operator gt gt span h span class tok
  • 简单理解epoll

    epoll系列系统调用 epoll是Linux特有的I O复用函数 epoll使用一组函数来完成任务 epoll把用户关心的文件描述符上的事件放在内核里的一个事件表中 epoll需要使用一个额外的文件描述符 xff0c 来唯一标识内核中的事
  • glibc-2.23 puts源码分析

    在分析puts代码之前先看一些基本的知识 一些flag span class token macro property span class token directive hash span span class token direct
  • Sublime Text 搭建 C++ 环境

    一 下载MinGW文件 1 下载mingw get setup xff1a 网址 xff1a https sourceforge net projects mingw 由于这是境外网站 xff0c 请自行解决连接问题 xff08 下载的文件
  • PlayFair加密方法原理及C+ +实现

    普莱费尔密码 xff08 英文 xff1a Playfair cipher 或 Playfair square xff09 是一种使用一个关键词方格来加密字符对的加密法 xff0c 1854年由一位名叫查尔斯 惠斯通 xff08 Charl
  • Python爬虫进阶(三):Selenium模拟浏览器操作

    目录 关于Selenium 启动webdriver selenium查找元素 selenium模拟用户行为 执行JS 模拟滚动条滚动 模拟鼠标操作 模拟键盘操作 其他常用函数 这一节我们来讲解使用selenium来模拟浏览器操作进而方便快捷
  • Python爬虫进阶(十):实战,Scrapy爬取贴吧

    目录 前言 目标 使用scrapy shell测试目标 1 为什么 2 尝试直接进入tieba baidu com 3 准备header 3 测试爬取目标 编写item 编写pipeline 编写spider 1 编写start reque
  • 关于WM_PAINT,窗口重绘invalidate、onidle

    一 WM PAINT 系统会在多个不同的时机发送WM PAINT消息 xff1a 当第一次创建一个窗口时 xff0c 当改变窗口的大小时 xff0c 当把窗口从另一个窗口背后移出时 xff0c 当最大化或最小化窗口时 xff0c 等等 xf
  • RMXP脚本解析(十五):Game_Battler(分割定义三)

    目录 前言 Game Battler xff08 分割定义三 xff09 代码解析 第一命中与第二命中 计算公式 xff08 真 xff09 effective xff08 攻击有效标志 xff09 的生效条件 属性修正 对象是Game A
  • RMXP脚本解析(#三十一):RGSS与RMXP数据库(十一.MoveRoute)

    前言 本类目前看到的实例出现在Game Character中 xff0c 作为其类变量 64 move route存在 本类用于描述移动的路径 RPG MoveRoute module RPG class MoveRoute def ini
  • 关于笔者个人博客访问与攻击的一个小统计,最常被利用的居然不是PHP框架?

    目录 前言 测试时间 测试用脚本 测试结果 xff08 ip部分 xff09 测试结果 xff08 url部分 xff09 前言 我只是闲的没事 xff0c 但是这一统计下来确实发现了一些有意思的事情 我的个人博客 xff08 August
  • 追忆童年系列:记一次寻找Flash小游戏的经历

    目录 Chapter 前言 Chapter 寻找游戏源文件 Chapter 寻找游戏源 Chapter 第二个版本的游戏 Chapter 解包及抓包 Chapter 游戏剧情 Chapter 最新 xff0c 最新的进展 Chapter 前
  • 进阶Django(三):模型外键、多对多关系、自关联外键及Meta类

    目录 前言 模型中的映射关系 1 物理外键与逻辑外键 2 Django中的外键 xff08 一对一 一对多关系 xff09 3 Django中的多对多关系 3 1 使用ManyToManyField自动建立多对多关系 3 2 另一种建立多对
  • Unity游戏教程初步(八):Animator的使用

    1 前言 本节中我们来介绍Unity的动画系统以及管理动画剪辑 xff08 Animation Clip xff09 的组件Animator 2 Unity中的动画系统 Unity的动画系统又称为Mecanim xff0c 是一个基于动画剪
  • 手机模拟器安装证书抓包

    目录 1 抓包软件 2 抓取HTTPS包 3 不同抓包软件配置步骤 4 代理 1 抓包软件 由于是手机模拟器 xff0c 所以可以使用adb进入命令行 xff0c 方便一些 抓包软件手机上的有HTTPCanary xff0c 电脑上需要配置
  • JAVA BP插件开发(一):基础插件开发

    本文会包括BP插件开发流程及打包 xff0c API xff0c javaswing xff08 UI xff09 部分的内容 阅读完本文后 xff0c 读者将初步具有开发BP插件的能力 1 开始开发 我们使用IDEA作为开发工具 xff0
  • 【C/C++】解决“两个类的头文件相互引用/超前引用”问题的方法

    一 什么是超前引用 xff1f 所谓 超前引用 是指一个类型在定义之前就被用来定义变量和声明函数 一般情况下C C 43 43 要求所有的类型必须在使用前被定义 xff0c 但是会存在一些特殊情况导致这种要求无法满足 xff0c 例如 类A

随机推荐

  • Kali linux2020.3下载与安装详细教程

    Kali linux下载与安装 你点进来看了 xff0c 想必你一定知道kali linux 我就不做解释了 xff0c 话不多说直接开始教程 要是不了解kali的点击此链接kali inux详情 1 前往官网下载kali镜像文件 http
  • EnvironmentNotWritableError: The current user does not have write permissions to the target environm

    在Anaconda虚拟环境中安装失败 xff0c 出现以下情况 EnvironmentNotWritableError The current user does not have span class token function wri
  • java线程池中的核心参数

    线程池中的核心参数 int corePoolSize xff1a 核心线程数 xff0c 即使线程池中无任务执行 xff0c 也会创建该数量的线程 int maximumPoolSize xff1a 最大线程数 xff0c 当核心线程数不够
  • vue初始化项目结构,并引入ant-design

    前提 xff1a node已经安装好 npm install cnpm g 安装淘宝镜像 npm可能速度不快 xff0c 所以可以使用cnpm来替代 cnpm install vue 安装vue cnpm install global vu
  • Argument for @NotNull parameter ‘quickFixes‘ of com/intellij/ope

    项目启动不了 idea 报错 xff1a Argument for 64 NotNull parameter quickFixes of com intellij ope 未配置jdk
  • 在同类中方法互调事务失效

    同类中A方法未加 64 Transactional xff0c B方法加 64 Transactional A调用B B的事务注解并未生效 众所周知 xff0c 事务是通过Aop动态代理实现的 xff0c 当A方法不加 64 Transac
  • @PropertySource和@ImportResource

    person properties person name 61 admin person address 61 shanghai person email 61 123 64 qq com person user card 61 3213
  • jdk1.8中HashMap的扩容,从新增第一个元素开始

    置灰部分在当前场景下不考虑 1 新增第一个元素 新增第一个元素总结 xff1a 先进行数组容量初始化 xff0c 初始大小为16 xff0c 扩容界限为12 xff0c 再找出数组对应位置 xff0c 将新增的值放入 2 继续新增元素 xf
  • redis解决分布式定时任务问题

    场景分析 xff1a 多服务器针对于定时任务带来的问题 xff0c 保证任务只在一个服务器上在执行 解决方案1 xff1a 只对一个服务器上的应用开启定时任务 xff0c 通过配置文件参数来设置 xff0c 不推荐 解决方案2 xff1a
  • Java堆中的分区

    Java堆分区 1 新生代 xff1a 新生代中分为Eden xff0c ServicorTo xff0c ServicorFrom区 Eden俗称伊甸区 xff0c 顾名思义 xff0c 就是新对象首次存在的区域 之后 xff0c 对象会
  • 打好基础之try-catch-finally执行顺序

    try catch finally是用来捕获异常 xff0c 保证程序的执行 先看一小段代码 xff1a public class TryCatchDemo public static void main String args div 4
  • Flask

    文章目录 Flask简介学习资料基本概念部署环境配置安装 Python3在Linux中配置Python3的虚拟环境配置Git安装第三方包 开始部署部署方式一 xff1a 直接启动部署方式二 xff1a gunicorn部署方式三 xff1a
  • iOS本地数据搜索 - UISearchController的简单实用

    在页面数据很多的时候我们通常会被要求加一个本地的搜索功能 xff0c 苹果给我们提供了一个封装的很好的控件UISearchController xff0c 下边介绍一下他的简单使用 定义需要的全局变量并初始化 span class hljs
  • 矩阵遍历问题

    这里记录些常见的矩阵遍历问题 xff0c 矩阵遍历没有什么简单的方法 xff0c 必须要遍历矩阵的每个元素 xff0c 因此在时间复杂度上没有什么简单的方法 xff0c 不过遍历时的方式可以不同 首先看下面例题 leetcode54 给定一
  • ubuntu系统添加环境变量3种方法

    说明 工作中 xff0c 我们自己编译安装的软件 xff0c 在系统中是无法在全局目录下自动识别的 xff0c 只能进入到相关目录下才能运行 xff0c 如在命令行下运行编译安装的php程序 xff0c 就得 usr local LAMP
  • Codeforces 897C(递归)

    点击打开链接 扎心题 xff0c 当时想法完全正确 xff0c 姿势不对 xff08 思维不够细腻 xff09 没过 题意 xff1a 给出四个字符串x y f0 z xff0c 并且给出递推公式 xff1a fi 61 x 43 fi 1
  • 天气预报API汇总

    目录 文章目录 一 天气预报平台 1 中国气象平台 2 心知天气 3 实况天气 4 YY天气 5 聚合天气 6 和风天气 7 彩云天气 8 咕咕天气 9 彩云天气 总结 一 天气预报平台 1 中国气象平台 优点 xff1a 中国气象局对外提
  • ResizeObserve 在 Echarts 的使用

    前言 前端图表经常要进行 resize 操作 xff0c 一般我们会想到监听 window resize event xff0c 但是这个事件只能监听 window 窗口大小的改变 xff0c 没有办法监听到某个div大小的改变 目前解决方
  • 运行java命令出现 Error: Invalid or corrupt jarfile XXX.jar

    运行java命令出现 Error Invalid or corrupt jarfile XXX jar 基本可以断定 xff0c 是jar不完整导致的 不完整 xff01 xff01 xff01 记住关键字 检查1 xff1a 检查是不是传
  • 页面间传值的方式

    从一个页面转向另一个页面的请求方式有两种 xff0c Post和Get 如果从原理上来探究他们的区别 xff0c 涉及到Http传输协议的细节 xff0c 这样深究下去 xff0c 就成华为人干的事了 xff0c 有空可以请教一下华为高人