Asp.net 页面之间传递参数

来源:互联网 发布:美图淘淘mac版 编辑:程序博客网 时间:2024/05/16 18:57

Asp.net 页面之间传递参数


这篇博客是本人第一篇博客。工作两年半时间接触 .net B/S 开发一年时间,本篇博客如有错误感谢您的指出与纠正,有所补充亦感谢您的点播与赐教。(对于 Asp.net 之间的页面传值方式,本人只是将自己了解并使用过的几种方式列举出来,本篇博客会不断增加后续了解或使用到的传值方式。)


Asp.net 是基于 .Net Framework 的 Web开发平台,具备开发网站的一切应用程序。

  • 使用 get 传值(url+参数名+参数值),接收方法为 Request.QueryString[参数名]

使用 get 传递参数需注意事项

  1. url 与 参数 之间由 来进行间隔区分,参数与参数之间由 & 来进行衔接。
  2. 接收时使用 Request.QueryString[参数名] 若参数名不存在则报错。
  3. get 执行效率较高,安全性较低,有2kb的大小限制。
  • 使用 post 传值,post传递数据集,接收方法为 Requert.Form[控件name/id属性]

使用 post 传递参数需注意事项

  1. Form 表单中的控件必须是html控件
  2. Post 传递参数安全性高,参数大小也有限制相较于get来说大很多。
  3. Form 表单要加上 Method = post, runat = server
  • 使用 Session 传值,接收方法为 Session[参数名],Session存放于服务器端

使用 Session 传递参数需注意事项

  1. Session 占用大量服务器资源,故要谨慎使用。
  2. 新建 Session 变量语法:Session.Add(参数名,参数值);
  3. 未过期的 Session 只有 Remove 掉值才会消失。
  • 使用 Cookie 传值,Cookie 存放于客户端,Cookie只能包含字符串的值,整数需要先转换为字符串的形式

使用 Cookie 传递参数需注意事项

  1. 实例化 HttpCookie,声明一个Cookie对象。HttpCookie 实例化对象名 = new HttpCookie(参数名,参数值)。
  2. 写入服务器端:Response.Cookies.Add(实例化对象名)。
  3. 获取存入的Cookies值:Request.Cookies[参数名].Value。
  • 使用 Application 传值,Application[参数名] 可获取参数值

使用 Application 传递参数注意事项

  1. Application 作用范围是全局,它和Session变量的区别在于,前者是所有的用户共用的全局变量,后者是各个用户独有的全局变量。
  2. 常用lock和unlock方法用来锁定和解锁,为了防止并发修改。
  • 使用 Server.Transfer 传值,Context.Handler 用来接收

使用 Server.Transfer 传递参数需注意事项 copy@ASP.NET页面之间传递值的几种方式

  1. Server.Transfer 中的 URL 必须为项目目录中存在的页面。
  2. Server.Transfer 在服务器端提出请求,减少客户端对服务器端的请求。
  3. Server.Transfer 可以传递各种数据类型的值和控件的值。

PS:比较Server.Transfer和Response.Redirect的区别:

  1. Server.Transfer在服务器端完成,所以客户端浏览器中的URL地址是不会改变的;Response.Redirect是客户端完成,向服务器端提出新的页面处理请求,所以客户端浏览器中的URL地址是会改变的。
  2. Server.Transfer在服务器端完成,不需要客户端提出请求,减少了客户端对服务器端提出请求。
  3. Server.Transfer只能够转跳到本地虚拟目录指定的页面,也就是工程项目中的页面,而Response.Redirect则十分灵活,可以跳转到任何URL地址。
  4. Server.Transfer可以将前一个页面的各种类型的值传到新的页面;Response.Redirect则只能借助URL中带参数或是结合上面四种办法把各种类型的值传到新的页面。

优点:

  1. 直接在服务器端重定向,使用简单方便,减少了客户端对服务器端提出请求。
  2. 可以传递各种数据类型的值和控件的值。

缺点:

  1. 客户端浏览器中的URL地址是不改变,会导致在新的页面可能出现一些意想不到的问题。比如如果源页面和目的页面不在同一个虚拟目录或其子目录下,那么使用相对路径的图片、超链接都会导致错误的指向。

使用方法:

  1. 在源页面的代码中,使用Page类的Server.Transfer跳到另一个页面传递页面数据:Server.Transfer(“b.aspx”,”false”)。
  2. 在目的页面中,使用Context.Handler来接收数据:FormerPage formerPage = (FormerPage)Context.Handler; 然后用formerPage的属性和方法来获取前一个页面的值,或者直接用Context.Items[“myParameter “]

  • 知学非用
原创粉丝点击