ASP.NET界面重定向传值
这么说吧,当程序启动时,ASP.NET会自动创建一些经常使用的类的实例,而这些实例就是ASP.NET的内置对象,常用的实例对象有:Response(来自HttpResponse类)、Request(来自HttpRequest类)、Server(来自HttpServerUtility类)、Application、Session、Context等,这些对象下又可以调很多方法。所谓界面重定向,就是跳转界面,发送一URL请求,有时候顺带传递点参数啥的。当完成一种要求时如果有多个解决方案,说明这个‘要求’分为好几种情况,各个方案也是各有利弊,无万全之策。下面介绍下重定向的几种常用方法。
QueryString:
最常用的传递方式,可高效传递数字或文本值,导航栏会显示参数值,所以缺乏安全性,可传递对象
Session:
导航栏不会显示参数,可传对象,大小不限,缺点是占用资源多
用例:用户第一次访问时,将定义的Session变量存储在服务器端,当再次访问时可以直接从Session对象中的集合获取相关数据,多为论坛、购物车、网站后台管理登陆系统使用,
Application:
导航栏不会显示参数,可传对象,占用资源少
Cookie:
导航栏不会显示参数,由于传递的数据大小被大多数浏览器限制为4096byte,所以用来存储用户ID之类的标识符
A界面:发送
- //QueryString
- protected void BtnQuery_Click(object sender, EventArgs e)
- {
- Response.Redirect("B.aspx?name2="+TextBox3.Text.Trim()+"&"+"name4="+TextBox4.Text.Trim());
- }
- //Session
- protected void BtnSess_Click(object sender, EventArgs e)
- {
- //Session.Contents.Add("name3",TextBox3.Text);
- //Session.Add("name3",TextBox3.Text);
- Session["name3"] = TextBox3.Text;
- Session["name4"] = TextBox4.Text;
- Response.Redirect("B.aspx?");
- }
- //Application
- protected void BtnApplic_Click(object sender, EventArgs e)
- {
- Application["name3"] = TextBox3.Text;
- Application["name4"] = TextBox4.Text;
- Response.Redirect("B.aspx?");
- }
- //Cookie
- protected void BtnCook_Click(object sender, EventArgs e)
- {
- HttpCookie name1 = new HttpCookie("name3");
- HttpCookie name2 = new HttpCookie("name4");
- name1.Value = TextBox3.Text;
- name2.Value = TextBox4.Text;
- Response.AppendCookie(name1);
- Response.AppendCookie(name2);
- Response.Redirect("B.aspx?");
- }
B界面:接收
- //QueryString
- protected void BtnQuGet_Click(object sender, EventArgs e)
- {
- TextBox3.Text = Request.QueryString["name3"];
- TextBox4.Text = Request.QueryString["name4"];
- }
- //Session
- protected void BtnSessGet_Click(object sender, EventArgs e)
- {
- TextBox3.Text = Session["name3"].ToString();
- TextBox4.Text = Session["name4"].ToString();
- }
- //Application
- protected void btnAppli_Click(object sender, EventArgs e)
- {
- TextBox3.Text = Application["name3"].ToString();
- TextBox4.Text = Application["name4"].ToString();
- }
- //Cookie
- protected void BtnCook_Click(object sender, EventArgs e)
- {
- TextBox3.Text = Request.Cookies["name3"].Value.ToString();
- TextBox4.Text = Request.Cookies["name4"].Value.ToString();
- }
当然,以上是最简单最基础的重定向Demo,实际上,仅仅是介绍Cookie,就需要很多篇幅说明,Session也是一样,相对来说简单点
情景: A登录界面验证成功
处理: A界面重定向之前加一句: Session["name1"] = username; 来传递参数
跳转到B目的界面之后,在Page_Load方法中写入判断:
- protected void Page_Load(object sender, EventArgs e)
- {
- string user = string.Empty;
- if ( Session["name1"]==null)
- {
- user = "";
- }
- else
- {
- user = Session["name1"].ToString();
- }
- if (user=="")
- {
- Response.Write("<script language='javascript'>alert('未登录无法查看此界面');location.href='Login.aspx'</script>");
- }
- Label1.Text = user;
- }
这样的话即使你关闭界面,再直接访问目的页,也可以成功访问,一般Session时间默认值是20min,只要不超过这个时间就可以访问
参考书籍:ASP.NET基础教程
----------市人皆大笑,举手揶揄之
ASP.NET界面重定向传值的更多相关文章
- c#ASP.NET中页面传值共有这么几种方式
一.目前在ASP.NET中页面传值共有这么几种方式: 1.Response.Redirect("http://www.hao123.com",false); 目标页面和原页面可以在 ...
- ASP.NET页面间传值的几种方式
ASP.NET页面间传值的几种方式 1.使用QueryString 使用QuerySting在页面间传递值已经是一种很老的机制了,这种方法的主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在 ...
- iOS Block界面反向传值
在上篇博客 <iOS Block简介> 中,侧重解析了 iOS Block的概念等,本文将侧重于它们在开发中的应用. Block是iOS4.0+ 和Mac OS X 10.6+ 引进的对C ...
- asp.net php asp jsp 301重定向的代码
介绍一下针对各类程序系统实施301重定向的代码: 1.Linux主机重定向 Godaddy的Liunx主机,Godaddy本身已经支持Apache,所以直接创建一个.htaccess文件就可以了,一般 ...
- iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)
iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值) 使用Block的地方很多,其中传值只是其中的一小部分,下面介绍Block在两个界面之间的传值: 先说一下思想: ...
- ASP.Net页面间传值
一.目前在ASP.NET中页面传值共有这么几种方式: 1.表单提交, <form action= "target.aspx" method = "post&qu ...
- iOS学习之界面间传值
/** * 界面间传值步骤 1.界面传值第一种场场景:从前往后传值. 秘诀:属性传值.(葵花宝典). 招式:(1).在后一个界面定义属性,属性的类型和传出数据类型一致. (2).在进入下一界面之前, ...
- ASP.NET中页面传值
一.目前在ASP.NET中页面传值共有这么几种方式: 1.表单提交, <form action= "target.aspx" method = "post&q ...
- ASP.NET 页面之间传值的几种方式
开篇概述 对于任何一个初学者来说,页面之间传值可谓是必经之路,却又是他们的难点.其实,对大部分高手来说,未必不是难点. 回想2016年面试的将近300人中,有实习生,有应届毕业生,有1-3年经验的,有 ...
随机推荐
- eclipse怎么解决Failed to load the JNIshared library
Q: 打开eclipse打开报Failed to load the JNIshared library的错误. A:jdk的位数跟eclipse位数一致即可解决. 把eclipse下载64位即可 cm ...
- 【pyqtgraph绘图】案例-动态的正余弦波形图
先看一个简单的小例子: 完整代码: import numpy as np import pyqtgraph as pg import sys from PyQt5.QtWidgets import Q ...
- Ubuntu14.04 LTS 安装Chrome浏览器(转)
add zhj: 亲测过,可以,原来不用FQ就可以下载,有点意外 原文:http://www.jianshu.com/p/8220578d0b15 1.打开终端(ctrl + alt + t),下载6 ...
- 内核atom机制
内核版本:linux2.6.22.6 硬件平台:JZ2440 驱动源码 atom_ipc_poll_key_int_drv.c : #include <linux/module.h> #i ...
- 【前端技术】web 开发常见问题--GET POST 区别
web 开发常见问题--GET POST 区别 首先,get和post是什么? --两种 HTTP 请求方法:GET 和 POST HTTP Request Methods GET.POST 专业 ...
- 字符集更改步骤,mysql乱码
关键字:Mysql乱码,mysql字符集修改 #字符集更改步骤~
- ORACLE入门之Linux基础篇
VIM0 这是数字『0 』:移动到这一行的最前面字符处$ 移动到这一行的最后面字符处G 移动到这个档案的最后一行nG n 为数字.移动到这个档案的第n 行.例如20G 则会移动到这个档 ...
- padStart()方法,padEnd()方法
https://blog.csdn.net/ixygj197875/article/details/79090578
- golang 的 TUI 及 GUI 库
interactive prompt library: abiosoft/ishell https://github.com/abiosoft/is ...
- 代码调试--自定义一个简单的debug函数
function debug(){ $num_args = func_num_args(); //实参个数 $arg_list = func_get_args(); //返回某一个实参,必须是实参数组 ...