WebForm跨页面传值---内置对象
一、Response.Redirect和Server.Transfer
1、Response - 响应请求对象
string path = "Default2.aspx“;
(1)Response.Redirect(path); -- 重定向。path为所要跳转的界面的路径
(2)Response.Write(" aaaa "); -输出内容。可以当检查作用,如Response.Write(" <script>alert('aaaa');</script> ");
QueryString 地址栏传值方式
格式为:”路径?变量=“+所需要传的值。
优点:简单好用,速度快,不消耗服务器内存.
缺点:只能传字符串 ;保密性不好 ;长度有限.
对path进行修改
path = "Default2.aspx?a="+TextBox1.Text;--传一个值
path = "Default2.aspx?a="+TextBox1.Text+"&b="+TextBox2.Text;--传两个或多个值
response.redirect(path);----path为string类型
2、还有一种跳转方法:Server.Transfer(path);
(1)在页面中设置将要传的值的控件
(2)在后台设置一个属性(get方法),用来接收传的值。
(3)设置跳转页面功能和按钮
(4)在第二个页面中(在接收传值页面的aspx页面中,添加<%@ Reference Page="~/GCSetting.aspx" %>才能创建发送值的页面实例),我们就可以在接收值页面的aspx.cs使用Context.Handler属性来获得前一个页面实例对象的引用,通过它,就可以使用存取前一个页面的控件的值了。
代码如下:将firstweb的值传到secondweb页面中去
firstweb:
aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="firstweb.aspx.cs" Inherits="firstweb" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server" Text="跳到页面2" />
<br />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
</html>
aspx.cs
using System; public partial class firstweb : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Button1.Click += Button1_Click;
}
public string name
{
get { return this.TextBox1.Text.Trim(); } }
private void Button1_Click(object sender, EventArgs e)
{
Server.Transfer("secondweb.aspx");
}
}
secondweb:
aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="secondweb.aspx.cs" Inherits="secondweb" %>
<%@ Reference page="~/firstweb.aspx" %><%--引用这个,才能在secondweb.aspx.cs中创建firstweb的实例--%> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<br />
<input type="button" id="aa" value="跳到页面1 " />
</div>
</form>
</body>
</html>
<script>
document.getElementById("aa").onclick = function () {
self.location = "firstweb.aspx";
};
</script>
aspx.cs
using System; public partial class secondweb : System.Web.UI.Page
{ protected void Page_Load(object sender, EventArgs e)
{
firstweb f1;
f1 = Context.Handler as firstweb;
if (f1 != null)
{
Label1.Text = f1.name;
} }
}
二、request 接收
格式:request["变量名"]。此变量为response.redirect()传值的变量,如上面的a,b.
Request - 获取请求对象
在Default2里面的Label1的代码:
Label1.Text= Request["a"];--a为传值时设定的变量a
Label1.Text+=Request["b"];--b为传值时设定的变量b
三、session 相对全局变量
赋值:session["key"]=任意值;-----key为自己设置的变量,”任意值“为自己要传的值,如label1.text或者TextBox1.Text;
取值:Button1.Text=session["key"].tostring();----在这里Button1.Text可以换成其他的。
(1)session["key"]的返回值时object,在进行取值时要进行类型转换
(2)相对全局变量的意思是:
打开一个页面,复制页面地址。如果页面不关闭,这个session的值随便用;如果把这个页面关了,重新粘贴地址打开,那么网页就会报错,因为页面与这个session的联系已经断了。如果重新打开另一个界面,那就是另外一个session。
相当于session是一个模型,是用来盛东西的,这个模型有好多个,你打开一个网页拿了一个模型,这要不扔这个模型,里面的值随便用。如果你把网页关闭,相当于把这个模型扔了,你就不能用这个模型了,相当于不能用这个网页了,然后你再去拿一个模型,那么通过第一个模型的网页就不能再用了,只能通过第二个模型来进行操作。
”全局“的意思是只要你给session赋值了,你在哪个网页都能用这个session。
(3)session是在服务器上运行的 ,不能滥用,会造成服务器内存溢出,导致服务器崩溃,解决办法为:传的内容的大小尽可能的小。但是不用session的话,会造成服务器资源浪费。
(4)session相当于程序的全局变量。
(5)session的存在周期为20分钟。就像登陆淘宝,20分钟后你不操作,会让你重新登录密码。
(6)session可以穿任意类型的内容。
四、Cookies
cookies的作用和session的作用一样,这里说一下区别
(1)cookies可以当全局变量,可以传值,但是它只能传字符串。
(2)cookies 的存在周期只能是20分钟。
(3)会话cookies是在自己的电脑上的硬盘来运行的和保存的。
(4)持久cookies的保存时间是由网站的设计方来设定的(如7天免登陆)。
//按钮1的点击事件
Response.Cookies["a"].Value = TextBox1.Text;//把文本框的内容传给cookies["a"]。
Response.Redirect("Default2.aspx");//店家按钮跳转到页面Default2界面
Response.Cookies["a"].Expires = DateTime.Now.AddDays();//设置cookies["a"]的保存状态为7天,即7天免登陆
Response.Cookies["a"].Expires=DateTime.Now.AddDays(-);//设置cookies["a"]为过期状态。
无论是session或者cookies,当传值的内容为汉字时,会显示乱码,那么就需要进行在当前界面编码,在下一个界面解码,这样就可以了。
//Default1的按钮1 的点击事件
string a= HttpUtility.UrlEncode(TextBox1.Text,System.Text.Encoding.GetEncoding("utf-8"));//对TextBox1的内容编译成a。
Response.Cookies["a"].Value = a;//把a的值赋给cookies["a"]。
Response.Redirect("Default2.aspx");//跳转界面Default2
//Default2的界面加载Page_Load
string a = HttpUtility.UrlDecode(Request.Cookies["a"].Value, System.Text.Encoding.GetEncoding("utf-8"));//对cookies["a]"的内容进行解码,赋值给a;
Label1.Text =a;
五、Application
(1)它是全局对象,只要被创建出来,所有人取得值是一样的。相当于建立一个全局变量,给这个变量规定一个值,只要服务器不关,所有人都能用这个变量。
(2)它的保存时间是永久的。
(3)存在于服务器中。
WebForm跨页面传值---内置对象的更多相关文章
- Webform(五)——内置对象(Response、Request)和Repeater中的数据增删改
一.内置对象 (一)Response对象 1.简介:response 对象在ASP中负责将信息传递给用户.Response对象用于动态响应客户端请求,并将动态生成的响应结果返回到客户端浏览器中,使用R ...
- Webform(七)——内置对象(Session、Application)和Repeater的Command操作
内置对象:用于页面之间的数据交互 为什么要使用这么内置对象?因为HTTP的无状态性. 一.内置对象 (一)Session 跟Cookies一样用来存储用户数据 1.Session.Cookies对比 ...
- 【2017-05-21】WebForm跨页面传值取值、C#服务端跳转页面、 Button的OnClientClick属性、Js中getAttribute和超链接点击弹出警示框。
一.跨页面传值和取值: 1.QueryString - url传值,地址传值 优缺点:不占用服务器内存:保密性差,传递长度有限. 通过跳转页面路径进行传值,方式: href="地址?key= ...
- WebForm跨页面传值取值、C#服务端跳转页面、 Button的OnClientClick属性和超链接点击弹出警示框
一.跨页面传值和取值: 1.QueryString - url传值,地址传值 优缺点:不占用服务器内存:保密性差,传递长度有限. 通过跳转页面路径进行传值方式: href="地址?key=v ...
- JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象
Day38 JSP JSP的运行过程具体如下: (1)客户端发出请求,请求访问JSP文件. (2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果 ...
- JSP中的Java代码和内置对象
一.JSP中的Java代码 (一)JSP页面中有三种方式嵌入java代码: 1.java的表达式 格式:<%= java表达式 %> 2.java的语句 格式:<% java语句&g ...
- 1.3(学习笔记)JSP(Java Server Pages)内置对象
一.内置对象 内置对象又称内建对象.隐式对象,是由服务器自动创建实例化的, 用户在使用时不需要显示的创建,可直接使用. jsp内置对象名称,类型及作用域 Scope代表该内置对象的作用范围,page表 ...
- Web内置对象 跨页面传值
内置对象: 1.QueryString - 地址栏数据拼接 get传值方式 格式:?key=value优点:简单好用,速度快,不消耗服务器内存. 缺点:只能传字符串,保密性不好,长度有限 Reques ...
- Webform(内置对象-Response与Redirect、QueryString传值、Repeater删改)
一.内置对象(一)Response - 响应请求对象1.定义:Response对象用于动态响应客户端请示,控制发送给用户的信息,并将动态生成响应.Response对象只提供了一个数据集合cookie, ...
随机推荐
- Java基础(5):试用Array类对数据进行操作(Sort和toString方法)
Arrays 类是 Java 中提供的一个工具类,在 java.util 包中.该类中包含了一些方法用来直接操作数组,比如可直接实现数组的排序.搜索等 1. 排序 语法: Arrays.sort(数 ...
- javascript语法详解
javascript语法:运算符 条件语句if...else... 条件语句switch 循环语句for 循环语句while 跳转语句 js运算符 1.算数运算符:+ - * % / ++ ...
- Android Handler练习
package com.example.myact12; import java.util.Random; import android.support.v7.app.ActionBarActivit ...
- Struts2部署在Websphere上的问题
配置Mapped Filter:可以解决Struts2的项目部署在WebSphere6.1下面,发生Action找不到的情况. 应用程序服务器>[选择所使用的服务器]>Web 容器设置&g ...
- Jqueryの锋利的jquery练习
$(function(){ $("div.SubCategoryBox li:gt(7):not(:last)").hide(); $("div.SubCategoryB ...
- Oracle数据类型总结
一 字符串类型 1.1:CHAR类型 CHAR(size [BYTE | CHAR]) CHAR类型,定长字符串,会用空格填充来达到其最大长度.非NULL的CHAR(12)总是包含12字节信息.CHA ...
- emulator-arm.exe 已停止工作、 emulator-x86 已停止工作
问题描述: emulator-arm.exe 已停止工作. emulator-x86 已停止工作.AVD模拟器启动一直黑屏.AVD模拟器启动一直显示andorid界面 解决方法: 1. sdk的安 ...
- 批量修改照片名称的shell脚本
代码这种经常完善的东西,其实是不太适合使用博客来发布的. 以下是一个批量修改照片名称的shell脚本: 事情是这样的,虽然手机拍的照片文件名是按照日期来确定的,但是是这种形式的 IMG_mmddYY_ ...
- 对OpenGL的GLFrame框架进行的扩展截至2014年11月29日
框架源自<OpenGL游戏编程>,增加了此框架的部分功能.其中有些小错误,尤其是MD2模型的那章,给出的框架只支持载入一个BOSS,当再载入一个BOSS时,就会发现两个模型的帧速会乱套. ...
- javascript 正则表达式(二)
/* 正则表达式方法:test(),exec(),String对象方法:match(),search(),replace(),split() 1.test()方法: 用法: regexp对象实例.t ...