HTML5技术

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

字号+ 作者:H5之家 来源:H5之家 2017-01-18 15:00 我要评论( )

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

开篇概述

对于任何一个初学者来说,页面之间传值可谓是必经之路,却又是他们的难点。其实,对大部分高手来说,未必不是难点。

回想2016年面试的将近300人中,有实习生,有应届毕业生,有1-3年经验的,有3-5年经验的,有5-10年经验的,对于所有的面试者,我几乎问了同一道题:"请说说你所知道的页面之间传值的几种形式和方法,

并阐述他们的原理和过程",关于这道题,从大家的回答来看,结果并不是很理想,从种类上来说,大部分人回答5种左右,极少部分能回答8种,没有超过8种的,但从深度上来说,很少有人能透彻的分析每种方法

的原理和过程,(当然,要想透彻的分析这些原理和过程,需要研究底层的东西,如page 生命周期和page原理,反射,IIS如何解析请求等,CLR,GC,反编译等)。鉴于此,我今天花些时间来总结一下,方面

大家学习,共同进步!!

明:本次博客只从广度上分析,不从深度上分析,若广大读者对深度上感兴趣,并且有一定的需求,那么,我专门写一篇深度上分析的文章,与大家分享,共同学习,共同进步。

大致概括一下,ASP.NET 页面之间传递值得方式大致可以分为如下几种:Request.QueryString["name"],Request.Form("name"),Session,Cookie,Cache,Application,Server.Transfer,Database,

HttpContext的Item属性,Files,DataBase等等。

 

详解每种方法

 

一、Request.QueryString

核心代码:

protected void getQueryString_Click(object sender, EventArgs e) { ]; Response.Write(QueStr); }

总结:

1、Request.QueryString:获取http查询字符串变量集合。有两重载,即Request.QueryString[string name]和Request.QueryString[int index];

2、Request.QueryString主要是获取url中的“?”之后的参数,如url:a.aspx?name="queryString",则Request.QueryString["name"]的值为“queryString”。

 

二、Request.Form

 核心代码:

protected void getQueryString_Click(object sender, EventArgs e) { ]; Response.Write(strQueForm); }

总结:

1、Request.Form 获取窗体变量集合。有两重载,即Request.Form[string name]和Requst.Form[int index]。

2、获取表单指定名字的参数值。

 

三、Session

1、Session基本操作

a、创建Session

createSession(string[] arrStr) { [] str=new string[arrStr.Length]; for (int i = 0; i < arrStr.Length; i++) { str[i] = i.ToString(); Session[str[i]] = arrStr[i]; } }

b、获取Session的值

].ToString();

c、遍历Session

getSession() { IEnumerator sessionEnum = Session.Keys.GetEnumerator(); while (sessionEnum.MoveNext()) { Response.Write(Session[sessionEnum.Current.ToString()].ToString()+); } }

d、清空Session,但不结束会话

clearSession() { Session.Clear(); }

e、结束Session会话

abandonSession() { Session.Abandon(); }

2、Session数据存放形式和位置

<system.web> <sessionState mode="Off|InProc|StateServer|SQLServer" cookieless="true|false" timeout="number of minutes" stateConnectionString="tcpip=server:port" sqlConnectionString="sql connection string" stateNetworkTimeout="number of seconds"/> </system.web>

注解:

mode:表示设置存储Session形式和位置; 

a、Off:禁用Session;

b、Inproc:In Process缩写,表示将Session存储在IIS进程内,但注意,该种方式虽然性能高,但IIS重启是,丢失Session信息;(默认值

c、SateServer:将Session存储在ASP.NET状态服务进程中(重新启动Web运用程序时保留会话状态,并使会话状态可以用于网络中的多个Web服务器);

d、将Session存储在SQL Server中

cookieless:设置客户端存储Session形式和位置

a、true:使用cookieless模式,这时客户端的Session信息就不再使用Cookie存储了,而是将其通过URL存储;

b、false:使用kookie模式,默认值。 

timeout 设置经过多少分钟后服务器自动放弃Session信息。默认为20分钟;

stateConnectionString 设置将Session信息存储在状态服务中时使用的服务器名称和端口号,例如:"tcpip=127.0.0.1:42424”。当mode的值是StateServer是,这个属性是必需的。(默认端口42424);

sqlConnectionString 设置与SQL Server连接时的连接字符串。例如"data source=localhost;Integrated Security=SSPI;Initial Catalog=joye"。当mode的值是SQLServer时,这个属性是必需的;

stateNetworkTimeout 设置当使用StateServer模式存储Session状态时,经过多少秒空闲后,断开Web服务器与存储状态信息的服务器的TCP/IP连接的。默认值是10秒钟;

3、Session原理

      为什么引入Session?大家知道,因为http是一种无状态协议,因此,Session正弥补了这一缺陷。当然,Session作用远远不止于这些,这里就不多论述。

      Session在ASP.NET中,表示客户端(Goggle,Firefox,IE等)与服务器端的会话,用来存储特定会话信息,准确来说,是用来存储特定用户信息。当客户端向服务器发送一个请求时,如登陆用户ID,服务器接收到该请求,服务器端Session产生一个与该登陆用户相关的SessionID,并将SessioID返回给客户端(Goggle,Firefox,IE等),在新会话开始时,服务器将SessionID当做cookie存储在用户的浏览器中。

总结:

1、定义:System.Web.SessionState.HttpSessionState  Page.Session //获取ASP.NET提供的当前Session对象。

2、特性:

a、Session中文意思为“会话”,在ASP.NET中,表示客户端和服务器之间的会话,web中常用会话之一。

b、Session存储在服务器端内存中。

c、Session可以存储任何类型的数据,包括自定义对象。

d、Session与Session间是相互独立的,互不干扰。

e、Session与Cookie配对使用,Session在服务器端产生SessionID,并将该SessionID返回给客户端(IE,FireFox,Google等),客户端Cookie来存储该SessionID,

    整过会话过程中,只要保存SessionID的Cookie不丢失,则Session的信息就不会丢失。

f、Session保存的数据可以跨页访问,即跨页面是全局的。

g、Session不能跨进程访问,只能由该会话用户访问。

h、可以在不结束会话的条件下,清除Session信息,即调用Session.Clear();

i、当会话结束,过期,服务器就会清除Session对象。

j、Session常用于保存登录用户的ID.

 

四、Application

核心代码:

 (1)a.aspx

private void Button1_Click(object sender, System.EventArgs e) {   Application[] = Label1.Text; }

(2)b.aspx

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存 - 奔跑吧!小郭

    ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存 - 奔跑吧!小郭

    2017-01-01 13:00

  • 【第二篇】ASP.NET MVC快速入门之数据注解(MVC5+EF6) - 三生石上

    【第二篇】ASP.NET MVC快速入门之数据注解(MVC5+EF6) - 三生石上

    2016-12-27 13:00

  • 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6) - 三生石上

    【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6) - 三生石上

    2016-12-23 17:00

  • 简单粗暴的移动端页面开发技能 - 谦一

    简单粗暴的移动端页面开发技能 - 谦一

    2016-12-12 14:01

网友点评
t