asp.net页面间传值方式

  使用asp.net开发项目,必然会在页面间进行传值,本文介绍几种常见的页面传值方式,仅作笔记,以便后续查找使用。

  前提:新建两个页面:ValuePage.aspx,ObtainValue.aspx,本文介绍的几种传值方式都是在valuePage页面赋值,传递到ObtainValue.aspx页面中。

  在ValuePage.aspx前台新建两个textbox控件,ID分别为:tbUserName,tbPwd。ObtainValue.aspx页面上同样有两个textbox空间,ID:tbUserName,tbPwd,目的是为了接收从ValuePage.aspx传递过来的值。

  1、使用QueryString方式:

  ValuePage.aspx.cs代码: 

Response.Redirect("ObtainValue.aspx?userName=" + this.tbUserName.Text.Trim () + "&pwd=" + this.tbPwd.Text.Trim());

  ObtainValue.aspx.cs代码:

private void QueryString()
        {
            this.tbUserName.Text = Request.QueryString["userName"];
            this.tbPwd.Text = Request.QueryString["pwd"];
        }

  2、Session传值:

  ValuePage.aspx.cs代码:

Session["userName"] = this.tbUserName.Text.Trim();
            Session["pwd"] = this.tbPwd.Text.Trim();
            Response.Redirect("ObtainValue.aspx");

  ObtainValue.aspx.cs代码:

this.tbUserName.Text = Session["userName"].ToString();
            this.tbPwd.Text = Session["pwd"].ToString();

  3、使用Application对象变量传值:

  ValuePage.aspx.cs代码:

Application.Lock();
            Application["userName"] = this.tbUserName.Text.Trim();
            Application["pwd"] = this.tbPwd.Text.Trim();
            Application.UnLock();

            Server.Transfer("ObtainValue.aspx");

  ObtainValue.aspx.cs代码:

Application.Lock();
            this.tbUserName.Text = Application["userName"].ToString();
            this.tbPwd.Text = Application["pwd"].ToString();
            Application.UnLock();

  解析:Application.Lock和Application.UnLock一般配对出现,用于锁住Lock与UnLock之间的所有代码(注意不光锁住对于Application的赋值)。Lock(obj) 于用锁住obj对象,obj对象必须是全局对象(如:Application)。网站内任何一个网页执行Application.Lock的时候,整站中所有关于Application的操作都会被锁定延时执行。(包括:Application赋值和Application读取);而Lock(obj)则不会影响其他没有写Lock(obj)的页面。Application.Lock/UnLock比较安全,因为它是全局锁定所有的Application的,而Lock(obj)则更灵活,因为另一页面中如果没有写Lock(obj)则可以修改其他页面Lock住的内容。

  4、使用Cookie对象变量:

  ValuePage.aspx.cs代码:


HttpCookie cookieName = new HttpCookie("userName");
cookieName.Value = this.tbUserName.Text.Trim();
Response.AppendCookie(cookieName);


HttpCookie cookiePwd = new HttpCookie("pwd", this.tbPwd.Text.Trim());
Response.AppendCookie(cookiePwd);


Server.Transfer("ObtainValue.aspx");

  ObtainValue.aspx.cs代码:

this.tbUserName.Text = Request.Cookies["userName"].Value.ToString();
            this.tbPwd.Text = Request.Cookies["pwd"].Value.ToString();

  解析:与Session一样,其是什对每一个用户而言的,但是有个本质的区别,即Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合ASP.NET内置对象Request来使用。

  5、使用Server.Transfer方法:

  ValuePage.aspx.cs代码:

public string UserName
        {
            get { return this.tbUserName.Text.Trim(); }
        }

        public string Pwd
        {
            get { return this.tbPwd.Text.Trim(); }
        }

        protected void btnTransferValue_Click(object sender, EventArgs e)
        {
            Server.Transfer("ObtainValue.aspx");
        }

  ObtainValue.aspx.cs代码:

private void TransferValue()
        {
            ValuePage valuePage;
            valuePage = (ValuePage)Context.Handler;
            this.tbUserName.Text = valuePage.UserName;
            this.tbPwd.Text = valuePage.Pwd;
        }

  

  在上文跳转到其他界面时使用Response.Redirect和Server.Transfer,此处简单介绍其区别:

  请求的过程: 
  1)浏览器aspx文件请求--->服务器执行--->遇到Response.Redirect语句->服务器发送Response.Redirect后面的地址给客户机端的浏览器--->浏览器请求执行新的地址 
  2)浏览器aspx文件请求->服务器执行->遇到Server.Transfer语句->服务器转向新的文件 
  可以见Server.Transfer比Response.Redirect少了一次服务器发送回来和客户端再请求的过程. 
  

  跳转对象: 
  1)Response.Redirect可以切换到任何存在的网页。 
  2)Server.Transfer只能切换到同目录或者子目录的网页. 
  

  数据保密: 
  1、Response.Redirect后地址会变成跳转后的页面地址。 
  2、Server.Transfer后地址不变,隐藏了新网页的地址及附带在地址后边的参数值。具有数据保密功能。 
  

  传递的数据量(网址后附带的参数): 
  1、Response.Redirect能够传递的数据以2KB(也就是地址栏中地址的最大的长度)为限。 
  2、传递的数据超过2KB时,务必使用Server.Transfer。

asp.net页面间传值方式

时间: 2024-08-28 03:45:05

asp.net页面间传值方式的相关文章

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

(新建项目WebApplication,添加新项:源页面Default.aspx和目标页面WebForm1.aspx. 在源页面Default.aspx中添加两个TextBox, ID分别为Nametb和Emailtb,两个Label;在WebForm1.aspx中添加两个Label,ID分别为lname和lemail,用于显示TextBox传过来的值.) 1.使用QueryString 使用QueryString在页面间传递值已经是一种很老的机制了,这种方法的主要优点是实现起来非常简单,然而它

合作开发-ASP.Net页面间传值

在合作开发中,在页面串传值的时候,遇到了一些困难,在网上搜罗了一下,发现好多的传值方式,可以简单地分以下三种. 一. URL传值 原页面的值放到目标页面的URL中,然后通过QueryString方法获得该值.然而它的缺点是传递的值是会显示在浏览器的地址栏上的(不安全),同时又不能传递对象,但是在传递的值少而安全性要求不高的情况下,这个方法还是一个不错的方案.下面展示用法: 源页面WebForm1.aspx.cs中的部分代码: private void Button1_Click(object s

asp.net页面间传值的五种方法

一.QueryString传值: 1. 这是最简单的传值方式,但缺点是传的值会显示在浏览器的地址栏中且不能传递对象,只适用于传递简单的且安全性要求不高的整数值,例: 新建一个WEB项目,添加一个页面命名为Test1,在页面中添加一个Button命名为btnLogin,再添加两个TextBox分别命名为tbxUserName和tbxPassWord,添加Buttond的Click()事件: private void btnLogin_Click (object sender, System.Eve

jsp同一应用中页面间传值方式

JSP页面间传递参数是经常需要使用到的功能,有时还需要多个JSP页面间传递参数.下面介绍一下实现的方法. (1)直接在URL请求后添加 如:< a href="thexuan.jsp?action=transparams&detail=directe">直接传递参数< /a> 特别的在使用response.sendRedirect做页面转向的时候,也可以用如下代码: response.sendRedirect("thexuan.jsp?acti

asp.net页面间传值的几种方法

表单提交 传送页面代码 <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>表单提交</title> <script type="text/javascript" language="javascript"> function post() { forPost.action

IOS开发之页面间传值的几种小方法

最正经的页面间传值方式莫过于代理传值,今天写的几种小方法不包括代理传值,因为是自学的原因,现在都不知道这几种方法的优缺点,往知道的朋友指正一下: 第一种:属性传值:(这种方法在故事版无效,适合纯代码编写时使用,为什么???) 前提:比如说有两个视图控制器:AViewController和BViewController,他们之间想从A传值到B, ——>在AViewController.m文件中 (1)导入BViewController #import "BViewController.h&q

【转】【ASP.NET MVC系列】浅谈ASP.NET 页面之间传值的几种方式

ASP.NET MVC系列文章 原文地址:https://www.cnblogs.com/wangjiming/p/6275854.html [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作篇)(下) [04]浅谈ASP.NET框架 [05]浅谈ASP.NET MVC运行过程 [06]浅谈ASP.NET MVC 控制器 [07]浅谈ASP.NET MVC 路由 [08]浅谈AS

iOS页面间传值的方式(Delegate/NSNotification/Block/NSUserDefault/单例)

iOS页面间传值的方式(NSUserDefault/Delegate/NSNotification/Block/单例) 实现了以下iOS页面间传值:1.委托delegate方式:2.通知notification方式:3.block方式:4.UserDefault或者文件方式:5.单例模式方式:6.通过设置属性,实现页面间传值 在iOS开发中,我们经常会遇到页面间跳转传值的问题,现归纳总结一下: 情况1:A页面跳转到B页面 方法: 在B页面的控制器中,编写对应的属性,在A页面跳转到B页面的地方,给

iOS页面间传值的方式

实现了以下iOS页面间传值:1.委托delegate方式:2.通知notification方式:3.block方式:4.UserDefault或者文件方式:5.单例模式方式:6.通过设置属性,实现页面间传值 在iOS开发中,我们经常会遇到页面间跳转传值的问题,现归纳总结一下: 情况1:A页面跳转到B页面 方法: 在B页面的控制器中,编写对应的属性,在A页面跳转到B页面的地方,给B的属性赋值即可 //SecondViewController.h @property(nonatomic) NSInt