这么说吧,当程序启动时,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界面重定向传值的更多相关文章

  1. c#ASP.NET中页面传值共有这么几种方式

    一.目前在ASP.NET中页面传值共有这么几种方式: 1.Response.Redirect("http://www.hao123.com",false); 目标页面和原页面可以在 ...

  2. ASP.NET页面间传值的几种方式

    ASP.NET页面间传值的几种方式 1.使用QueryString 使用QuerySting在页面间传递值已经是一种很老的机制了,这种方法的主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在 ...

  3. iOS Block界面反向传值

    在上篇博客 <iOS Block简介> 中,侧重解析了 iOS Block的概念等,本文将侧重于它们在开发中的应用. Block是iOS4.0+ 和Mac OS X 10.6+ 引进的对C ...

  4. asp.net php asp jsp 301重定向的代码

    介绍一下针对各类程序系统实施301重定向的代码: 1.Linux主机重定向 Godaddy的Liunx主机,Godaddy本身已经支持Apache,所以直接创建一个.htaccess文件就可以了,一般 ...

  5. iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)

    iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)   使用Block的地方很多,其中传值只是其中的一小部分,下面介绍Block在两个界面之间的传值: 先说一下思想: ...

  6. ASP.Net页面间传值

    一.目前在ASP.NET中页面传值共有这么几种方式: 1.表单提交,   <form action= "target.aspx" method = "post&qu ...

  7. iOS学习之界面间传值

    /** *  界面间传值步骤 1.界面传值第一种场场景:从前往后传值. 秘诀:属性传值.(葵花宝典). 招式:(1).在后一个界面定义属性,属性的类型和传出数据类型一致. (2).在进入下一界面之前, ...

  8. ASP.NET中页面传值

    一.目前在ASP.NET中页面传值共有这么几种方式: 1.表单提交,    <form action= "target.aspx" method = "post&q ...

  9. ASP.NET 页面之间传值的几种方式

    开篇概述 对于任何一个初学者来说,页面之间传值可谓是必经之路,却又是他们的难点.其实,对大部分高手来说,未必不是难点. 回想2016年面试的将近300人中,有实习生,有应届毕业生,有1-3年经验的,有 ...

随机推荐

  1. oracle序列的增、删、改、查及使用

    ----------------------------------------------------------------------创建序列:示例:CREATE SEQUENCE SEQ_SS ...

  2. svn 启动命令讲解

    svn默认端口是3690 svn启动命令详解 svn启动命令详解 svnserve --help usage: svnserve [-d | -i | -t | -X] [options] Valid ...

  3. MYSQL的历史

    MYSQL的历史 见证MySQL发展历程 各分支版本溯源 http://tech.it168.com/a2012/0621/1363/000001363446.shtml [IT168 技术]毫无疑问 ...

  4. 唯美MACD

    上证30 分钟产生背离,60 分钟高位,但并没有背离,若调整,也是30F 级别的.算是上涨途中的歇脚. 1.股票如果非要从MACD 上去判断怎么拿,那么一句话:要大跌,一般都需要背离.所以,没有背离的 ...

  5. error: Microsoft Visual C++ 14.0 is required(line_profiler模块安装失败的解决办法)

    一.我的安装环境: 1.系统:win10,64位 2.python版本:python3.6.4 二.遇到的问题: 1.cmd黑屏终端下输入命令:pip install line_profiler(安装 ...

  6. .ashx文件与.ashx.cs

    如果项目是“新建网站”,添加的ashx是没有ashx.cs的:如果是新建"asp.net web 应用程序",添加的ashx是有ashx.cs的. 今天做项目测试遇到一个问题,因为 ...

  7. EOS 开发终极神器-vscode (你绝对找不到的干货)

    https://eosfans.io/topics/323 前言:最近一直苦于EOS开发没有好用的IDE,用了很多,试了很多,都让人觉得有些差强人意.于是乎笔者在经过,长时间的查找实践中,终于找到了e ...

  8. (转)以太坊(Ethereum ETH)的奖励机制

    如果问一块显卡它最恨什么,那么答案一定是以太坊.以太坊,矿工为之疯狂,显卡为之颤抖,游戏玩家为之骂娘. 然而,除了购买矿机.连接矿池.卖币套现之外,是否有人关注过以太坊的奖励机制呢? 且听我慢慢道来. ...

  9. mybatis oracle 插入自增记录 获取主键值 写回map参数

    网上搜了好多文章照着弄都返回不了主键给map, 实践证明要在传入的map参数里写回插入的主键,要这样写 <selectKey resultType="java.lang.Integer ...

  10. shell 脚本中如何添加多行注释

    shell中有时会用到多行注释,一种时vim的快捷方式,我不太熟悉,一种是如下 :<<!   ......! 使用: :<< !.......! 比如: :<< ! ...