zoukankan      html  css  js  c++  java
  • ASP.NET跨页传值方法汇总

    方法一:问号传值(Response.Redirect方法)

    1:源页:在按钮的点击事件程序中写入Response.Redirect方法,在其中使用问号传值。如:

    Response.Redirect("Default2.aspx?id="+txtId.Text.Trim()+"&name="+Server.UrlEncode(txtName.Text.Trim()));

    HTML代码中可以这样写:

    <a href="Default2.aspx?id=1&name=aa">跳转</a>  //多个值用&相连,注意&两边不要加空格

    2:目标页:在Request.QueryString集合中查找。

    如:Response.Write("ID is "+Request.QueryString["id"].ToString());

    或者:<% =Request.QueryString["id"] %>

    特点:简单方便,可以跨WEB服务器,但效率低。当Web服务器接到一个重定向请求后,它会将一个响应头送给客户端,这将导致客户端发送一个新的请求到服务器。按句话说,一个重定向请求实际上是两个请求响应如果想要传递一个安全性不太重要或一个结构简单的数值时,用此法最容易

    方法二:使用Server.Transfer

    1:源页:在按钮的点击事件程序中写入:  Server.Transfer("Default2.aspx", true);   注意一定要加上第二个参数true,否则值传不过去。

    2: 目标页:在Request.Form集合中查找发送方页面上的文本框架ID,如

    Response.Write("传过来的名字是:"+Request.Form["txtName"].ToString());

    特点:跳转的范围仅限于同一个Web服务器的不同网页,且在地址栏中显示的仍是原网页的地址,不便于调试,但属于服务器端的直接重定向,效率比Response.Redirect方法高。

    Response.Redirect和Server.Transfer的比较
    由于Response.Redirect方法要进行两次请求响应操作,因此,我们应该在对性能要求高的网站尽量避免使用这种方法。然而,只从技术上说,使用redirect方式确实可以从一个网页跳到另一个网页。相比之下,Server.Transfer会更有效率,但是。从本质上说,我们可以使用 Server.Transfer来消除不必要的请求响应操作。如果我们需要重定位到不同服务器的网页,就需要使用Response.Redirect方法。

    方法三:使用PostBackUrl

    从ASP.NET2.0开始,可以使用PostBackUrl实现跨页传值。

    1:源页:在实现了IbuttonControl接口的控件(如按钮、LinkButton等)上,添加属性PostBackUrl="~/Default2.aspx"

    2: 目标页:使用PreviousPage属性,且最好判断一下是否是从发送页以PostBackUrl方式跳转过来的,代码如下所示:

            if(PreviousPage!=null && PreviousPage.IsCrossPagePostBack &&

              PreviousPage.IsValid)

            {

                TextBox txt = (TextBox)PreviousPage.FindControl("txtName");

                Response.Write(txt.Text);

            }

    若要获取源页的公共成员(例如某个属性的值),必须先获取对源页的强类型引用。例如:

    源页中有如下属性:public String CurrentCity{    get    { return textCity.Text;   }}

    目标页:<%@ PreviousPageType VirtualPath="~/SourcePage.aspx" %>

    Label1.Text = PreviousPage.CurrentCity;

    特点:底层通过javascript函数和保存视图状态的__POSTBACK的隐藏字段实现。具体效率应该较高。

    方法四:使用Application对象变量

    1:源页: 保存信息,建议同时使用Lock和UnLock方法。

    Application.Lock();

    Application["PageRequestCount"] = 

        ((int)Application["PageRequestCount"])+1;

    Application.UnLock();

    2:目标页:int cnt=int.Parse(Application["PageRequestCount"].ToString());

    特点:全局变量,所有用户可见,常用在聊天室程序中。

    方法五:使用Session

    1:源页:保存信息

    Session["Name"]= txtName.Text;


    2:目标页 string name=Session["Name"].ToString();

    Session对象变量若存储过多的数据则会消耗大量的服务器资源,在使用时尤其要注意控制数量。

    方法六:使用Cookie

    1:源页: HttpCookie Name= new HttpCookie("Name");
          Name.Value= txtName.Text;

    cookie.Expires = DateTime.Now.AddMinutes(30);

    HttpContext.Current.Response.AppendCookie(Name);

    2:目标页:string info =Request.Cookies["cookiename"].Value;

    或者:

    HttpCookie acookie=Request.Cookie("cookiename");//通过Request获取acookie对象
     string aa=acookie.Value.ToString();//在通过Value属性获取值基本上和Response用法相似。在获取cookie之前,应确保该cookie确实存在。否则,您将得到一个system.NullReferenceException

    注:后面三种方法用的是三大对象,各自的特点请参考其他资料。

  • 相关阅读:
    C#对ListView控件的几个操作技巧
    C#用代码创建控件,以及它的鼠标事件
    C#使用ListView控件对数据进行频繁更新时,出现闪烁问题的解决办法
    C#判断某个键值是否存在于字典中
    FreeMASTER 2.0的安装与使用
    C和C++中获取二维数组的行列数
    Python中类的定义和使用
    Python创建字典和添加键值
    C#用鼠标滚轮控制控件大小,实现滚轮缩放效果
    C#中对Excel文件执行写数据操作
  • 原文地址:https://www.cnblogs.com/lgzslf/p/1486362.html
Copyright © 2011-2022 走看看