• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > 详解ASP.NET 页面之间传值的几种方式

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

作者:Alan_beijing 字体:[增加 减小] 来源:互联网 时间:2017-05-11

Alan_beijing通过本文主要向大家介绍了asp session传值,asp传值,asp页面传值,asp传值给js,asp页面间传值等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

开篇概述

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

回想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)
 {
   string QueStr = Request.QueryString["name"];
   Response.Write(QueStr);
 }
</div>

总结:

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)
 {
   string strQueForm = Request.Form["TextBox1"];
   Response.Write(strQueForm);
 }
</div>

总结:

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

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

三、Session

1、Session基本操作

a、创建Session

//创建Session
    public void createSession(string[] arrStr)
    {
      //创建数组
      string[] str=new string[arrStr.Length];
      for (int i = 0; i < arrStr.Length; i++)
      {
        str[i] = i.ToString();
        Session[str[i]] = arrStr[i];
      }
    }
</div>

b、获取Session的值

string getSessionValue=Session["name"].ToString();
</div>

c、遍历Session 

//遍历Session
    public void getSession()
    {
      IEnumerator sessionEnum = Session.Keys.GetEnumerator();
      while (sessionEnum.MoveNext())
      {
        Response.Write(Session[sessionEnum.Current.ToString()].ToString()+";");
      }
    }

</div>

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

//清空Session,但不结束会话
    public void clearSession()
    {
      Session.Clear();
    }

</div>

e、结束Session会话

//结束Session会话
    public void abandonSession()
    {
      Session.Abandon();
    }
</div>

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>
</div>

注解:

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["name"] = Label1.Text; 
}

</div>

(2)b.aspx

private void Page_Load(object sender, EventArgs e) 
{ 
  string name; 
  Application.Lock(); 
  name = Application["name"].ToString(); 
  Application.UnLock(); 
}
</div>

总结:

1、Application对象的作用范围是整个全局,也就是说对所有用户都有效。它在整个应用程序生命周期中都是有效的,类似于使用全局变量一样,所以可以在不同页面中对它进行存取。它和Session变量的区别在于,前者是所有的用户共用的全局变量,后者是各个用户独有的全局变量。可能有人会问,既然所有用户都可以使用application变量,那他可以用在什么场合呢?这里举个例子:网站访问数。多个请求访问时都可以对它进行操作。

2、优点:使用简单,消耗较少的服务器资源;不仅能传递简单数据,还能传递对象;数据量大小是不限制的。

3、缺点:作为全局变量容易被误操作。所以单个用户使用的变量一般不能用application。

4、在源页面的代码中创建你需要传递的名称和值构造Applica

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 详解ASP.NET 页面之间传值的几种方式
  • 详解ASP.NET中Session的用法
  • 实现Asp与Asp.Net共享Session的方法
  • 在ASP.NET中,设置Session的过期时间的方法
  • 在ASP.NET中使用Session常见问题集锦

相关文章

  • 2017-05-11向asp.Net进发 数据库连接操作
  • 2017-05-11IsPostBack原理的介绍
  • 2018-08-20基于MVC5中的Model层开发数据注解
  • 2017-05-11合并两个DataSet的数据内容的方法
  • 2017-05-11使用HtmlAgilityPack XPath 表达式抓取博客园数据的实现代码
  • 2017-05-11Asp.net实现直接在浏览器预览Word、Excel、PDF、Txt文件(附源码)
  • 2017-05-11把jQuery的each(callback)方法移植到c#中
  • 2017-05-11IIS 浏览aspx页面出现无法显示XML页的解决方法分享
  • 2017-05-11C# 数组查找与排序实现代码
  • 2018-08-20jenkins部署.net平台自动化构建的方法步骤

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 实例解析Java中的synchronized关键字与线程安全问题
    • asp.net core mvc实现伪静态功能
    • .net邮箱发布邮箱信息的实例
    • asp.net利用Ajax和Jquery在前台向后台传参数并返回值的实例
    • 浅析.NET逻辑分层架构
    • repeater分页 内容显示
    • 根据控件Id得到控件并对该控件进行操作
    • SqlCommandBuilder如何实现批量更新
    • 用存储过程向数据库存值的具体实现
    • Asp.Net、asp实现的搜索引擎网址收录检查程序

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有