常用方法有以下:

1、queryString

2、form-post控件传递

3、cookie

4、application

5、session

querystring:

http://website.com/webform.aspx?name=parval&address=values

这种是带有参数的url,其中querystring:name=parval&address=values。通过这种方式,在目标页面中,用request.querystring["name"]即可获取参数值parval。

在出发页面中构建目标url

protected void Button1_Click(object sender, EventArgs e)
    {
        string url = "Default2.aspx?sss=" + TextBox1.Text;
        Response.Redirect(url);
    }

在目标页面中获取参数值

protected void Page_Load(object sender, EventArgs e)
    {
        if(!IsPostBack)
        {
            string s = Request.QueryString["sss"];
            Label1.Text += s;
        }
    }

运行,这是出发页面

这是目标页面

用Server.Transfer(url)传值和Response.Redirect是一样的,不同之处就在于Transfer打开的目标页面的地址中没有queryString,也就是没有网址中的?后面这部分。

用querystring传递多个值:string url = "Default2.aspx?TextBox1=" + TextBox1.Text + "&TextBox2=" + TextBox2.Text;

querystring有以下注意点:

1、只能传递2k以内的信息,包括url地址“http://.....”。

2、获取信息的形式只能是一个字符串。

3、调用不存在的 Request.QueryString["paname"]返回的是null

4、在保证不会与其他参数重名时,可以简略写成Request["paname"]

form-post控件传递:

通过ID寻找一个web控件,control.FindControl("ID"),返回的是一个webcontrol对象,需要添加匹配的显示转换,才可以对此对象进行操作,比如:

(ListBox)Control.FindControl("ID");

这里有一点要注意,如果出发页面是通过Response.Redirect(url);跳转到目标页面,那么在目标页面中PreviousPage的值为null。通过Server.Transfer(url);来跳转,那么在目标页面中PreviousPage .IsCrossPagePostBack的值为false,因此这两种跳转方式不适合用来通过控件传值。

这里通过一个超链接来实现PostBackUrl跳转,从而实现控件传值:

这是出发页面的代码

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        <asp:LinkButton ID="LinkButton1" runat="server" PostBackUrl="~/Default2.aspx">使用postbackurl跳转</asp:LinkButton>

目标页面

 if(PreviousPage!=null)
       {
           if(PreviousPage .IsCrossPagePostBack)
           {
               TextBox t1 = (TextBox)PreviousPage.FindControl("TextBox1");
               TextBox t2 = (TextBox)PreviousPage.FindControl("TextBox2");
               Label1.Text = "textbox1="+t1.Text+";textbox2="+t2.Text; }

       }

注意一下页面加载的顺序,当点击链接后,程序加载到目标页面的Page_Load方法中,执行if(PreviousPage!=null)判断的时候,这时程序会跳转到出发页面去执行出发页面的Page_Load方法。如果说这次页面跳转不是通过超链接,而是通过按钮的PostBackUrl来跳转,同时这个按钮还有一个OnClick事件,那么在重新执行出发页面的Page_Load方法后,还会执行这个OnClick事件。因此如果在OnClick事件中定义按钮的PostBackUrl,在点击按钮后是不会跳转的,需要再点一次才行。至于为什么,自己去想。

cookie的传值参见关于cookie的介绍。application和session以后再讨论。

asp.net 跨页面传值常用方法的更多相关文章

  1. ASP.NET跨页面传值技巧[总结]

    个人网站:http://www.51pansou.com .net视频下载:.net视频教程 .net源码下载:.net源码 关于页面传值的方法,我就我个人观点做了些总结,希望对大家有所帮助. 1.  ...

  2. ASP.NET跨页面传值技巧

      1 使用QueryString变量    QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用  ...

  3. asp.net跨页面传值

    a.aspx.cs //获取a中的id HttpCookie objCookie = new HttpCookie("myCookie", id); Response.Cookie ...

  4. 跨页面传值之QueryString

    跨页面传值常用方法 1.QueryString 2.Form-post控件传递 3.Cookies传递 4.Application传递 5.Session传递(灵活强大) 1.query传值 http ...

  5. 【2017-05-21】WebForm跨页面传值取值、C#服务端跳转页面、 Button的OnClientClick属性、Js中getAttribute和超链接点击弹出警示框。

    一.跨页面传值和取值: 1.QueryString - url传值,地址传值 优缺点:不占用服务器内存:保密性差,传递长度有限. 通过跳转页面路径进行传值,方式: href="地址?key= ...

  6. WebForm跨页面传值取值、C#服务端跳转页面、 Button的OnClientClick属性和超链接点击弹出警示框

    一.跨页面传值和取值: 1.QueryString - url传值,地址传值 优缺点:不占用服务器内存:保密性差,传递长度有限. 通过跳转页面路径进行传值方式: href="地址?key=v ...

  7. c#ASP.NET中页面传值共有这么几种方式

    一.目前在ASP.NET中页面传值共有这么几种方式: 1.Response.Redirect("http://www.hao123.com",false); 目标页面和原页面可以在 ...

  8. ASP.NET中页面传值

    一.目前在ASP.NET中页面传值共有这么几种方式: 1.表单提交,    <form action= "target.aspx" method = "post&q ...

  9. ASP.NET之页面传值

    一.目前在ASP.NET中页面传值共有这么几种方式: 1.使用QueryString变量QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全 ...

随机推荐

  1. poj1184 聪明的打字员(BFS剪枝)

    http://poj.org/problem?id=1184 用字符串s存下数字,并把光标位置做一个字符加到s末尾,用map做标记状态是否出现过,然后bfs即可. 不剪枝是过不了的,考虑的两种交换操作 ...

  2. 通用线程:POSIX 线程详解,第 3 部分 条件互斥量(pthread_cond_t)

    使用条件变量提高效率 本文是 POSIX 线程三部曲系列的最后一部分,Daniel 将详细讨论如何使用条件变量.条件变量是 POSIX 线程结构,可以让您在遇到某些条件时“唤醒”线程.可以将它们看作是 ...

  3. Java 面向对象(转)

    转自:http://blog.sina.com.cn/s/blog_83c5190f01010ate.html 1.我们可以把JAVA中的类分为以下三种: 类:使用class定义且不含有抽象方法的类. ...

  4. MySQL安装配置过程

    1.下载压缩包,解压: 2: 修改  my-default.ini 文件 将一下代码前# 去掉修改成自己的地址 # These are commonly set, remove the # and s ...

  5. 【Android & iOS】应用升级实现

    在移动应用中,都会有的一个功能就是应用版本升级,怎么实现这个功能呢? 基本的思路就是:对比当前使用的应用版本和最新的版本号,如果版本号不一致,就可以提示用户升级啦. Android中,可以通过一下方式 ...

  6. 快速解决js开发下拉框中blur与click冲突

    在开发中我们会经常遇到blur和click冲突的情况.下面叙述了开发中常遇到的"下拉框"的问题,并提供了两种解决方案. 一.blur和click事件简述 blur事件:当元素失去焦 ...

  7. [转]gcc -I -L -l区别

    我们用gcc编译程序时,可能会用到“-I”(大写i),“-L”(大写l),“-l”(小写l)等参数,下面做个记录: 例: gcc -o hello hello.c -I /home/hello/inc ...

  8. ListView的小知识

    1.设置项目分割功能 android:divider="@android:color/blue" android:dividerHeight="10dp" &l ...

  9. placeholder在不同浏览器下的表现及兼容方法 placeholder兼容

    1.什么是placeholder?    placeholder是html5新增的一个属性,当input或者textarea设置了该属性后,该值的内容将作为灰字提示显示在文本框中,当文本框获得焦点(或 ...

  10. AsyncTask加载图片

    http://blog.csdn.net/sodino/article/details/7741674 http://www.cnblogs.com/weisenz/archive/2012/04/1 ...