ASP.NET实现页面传值的几种方法小结

这三种方法是:QueryString,Session和Server.Transfer。

通过URL链接地址传递  send.aspx:
 

代码如下:

protected void Button1_Click(object sender, EventArgs e)
    {
        Request.Redirect("Default2.aspx?username=honge");
    }

receive.aspx:


代码如下:

string username = Request.QueryString["username"];//这样可以得到参数值。

第二种方法:
通过post方式。  send.aspx
receive.aspx


代码如下:

string username = Ruquest.Form["receive"];

第三种方法:
通过session  send.aspx:


代码如下:

protected void Button1_Click(object sender, EventArgs e)
    {
        Session["username"] = "honge";
        Request.Redirect("Default2.aspx");
    }

receive.aspx:


代码如下:

string username = Session["username"];//这样可以得到参数值。

第四种方法:
通过Application  send.aspx:


代码如下:

protected void Button1_Click(object sender, EventArgs e)
    {
        Application["username"] = "honge";
        Request.Redirect("Default2.aspx");
    }

receive.aspx:


代码如下:

string username = Application["username"];//这样可以得到参数值。

第五种方法:
通过Server.Transfer  send.aspx:


代码如下:

public string Name
    {
        get {
            return "honge";
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Server.Transfer("Default2.aspx");
    }

receive.aspx:


代码如下:

send d = Context.Handler as send ;
        if (d != null)
        {
            Response.Write(d.Name);这样可以得到参数值。
 }

如果在asp.net 2.0中还可以这样用:通过PreviousPage


代码如下:

PreviousPage d = Context.Handler as PreviousPage ;
    if (d != null)
    { Response.Write(d.Name);//这样可以得到参数值。
    }

也可以这样用:  send.aspx:
receive.aspx:
string name = PreviousPage.Name;这样可以得到参数值。

如果你的页面中用到了MasterPage的话 Server.Transfer 传递的 PreviousPage就无效了,不知道这是什么原因。所以在用到MasterPage的话,最好用Session或是Context.Items["username"]来实现。
使用QueryString
    使用QuerySting在页面间传递值已经是一种很老的机制了,这种方法的主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在浏览器的地址栏上的(不安全),同时又不能传递对象,但是在传递的值少而安全性要求不高的情况下,这个方法还是一个不错的方案。使用这种方法的步骤如下:
    ◆使用控件创建web表单(form)
    ◆创建可以返回表单的按钮和链接按钮
    ◆在按钮或链接按钮的单击事件里创建一个保存URL的字符变量
    ◆在保存的URL里添加QueryString参数
    ◆使用Response.Redirect重定向到上面保存的URL
    下面的代码片断演示了如何实现这个方法:
    源页面代码: 


代码如下:

private void Button1_Click

(object sender, System.EventArgs e)
{
string url;
url="anotherwebform.aspx?name=" + TextBox1.Text + "&email=" + TextBox2.Text;
Response.Redirect(url);
}

目标页面代码


代码如下:

private void Page_Load
(object sender, System.EventArgs e)
{
Label1.Text=Request.QueryString["name"];
Label2.Text=Request.QueryString["email"];
}

使用Session变量
    使用Session变量是可以在页面间传递值的的另一种方式,在本例中我们把控件中的值存在Session变量中,然后在另一个页面中使用它,以不同页面间实现值传递的目的。但是,需要注意的是在Session变量存储过多的数据会消耗比较多的服务器资源,在使用session时应该慎重,当然了,我们也应该使用一些清理动作来去除一些不需要的session来降低资源的无谓消耗。使用Session变量传递值的一般步骤如下:
    ◆在页面里添加必要的控件
    ◆创建可以返回表单的按钮和链接按钮
    ◆在按钮或链接按钮的单击事件里,把控件的值添加到session变量里
    ◆使用Response.Redirect方法重定向到另一个页面
    ◆在另一个页面提取session的值,在确定不需要使用该session时,要显式清除它
    下面的代码片断演示了如何实现这个方法:
    源页面代码:


代码如下:

private void Button1_Click
(object sender, System.EventArgs e)
{
[url=file://textbox1]file://textbox1[/url] and textbox2 are webform
[url=file://controls]file://controls[/url]
Session["name"]=TextBox1.Text;
Session["email"]=TextBox2.Text;
Server.Transfer("anotherwebform.aspx");
}

目标页面代码: 


代码如下:

private void Page_Load
(object sender, System.EventArgs e)
{
Label1.Text=Session["name"].ToString();
Label2.Text=Session["email"].ToString();
Session.Remove("name");
Session.Remove("email");
}

使用Server.Transfer这个方法相比上面介绍的方法稍微复杂一点,但在页面间值传递中却是特别有用的,使用该方法你可以在另一个页面以对象属性的方式来存取显露的值,当然了,使用这种方法,你需要额外写一些代码以创建一些属性以便可以在另一个页面访问它,但是,这个方式带来的好处也是显而易见的。总体来说,使用这种方法是简洁的同时又是面向对象的。使用这种方法的整个过程如下:
    ◆在页面里添加必要的控件
    ◆创建返回值的Get属性过程
    ◆创建可以返回表单的按钮和链接按钮
    ◆在按钮单击事件处理程序中调用Server.Transfer方法转移到指定的页面
    ◆在第二个页面中,我们就可以使用Context.Handler属性来获得前一个页面实例对象的引用,通过它,就可以使用存取前一个页面的控件的值了
    以下代码综合实现上述步骤过程的代码:
    源页面代码:
    把以下的代码添加到页面中 


代码如下:

public string Name
{
get
{
return TextBox1.Text;
}
}
public string EMail
{
get
{
return TextBox2.Text;
}
}

然后调用Server.Transfer方法


代码如下:

private void Button1_Click
(object sender, System.EventArgs e)
{
Server.Transfer("anotherwebform.aspx");
}

目标页面代码:


代码如下:

private void Page_Load
(object sender, System.EventArgs e)
{
[url=file://create]file://create[/url] instance of source web form
WebForm1 wf1;
[url=file://get]file://get[/url] reference to current handler instance
wf1=(WebForm1)Context.Handler;
Label1.Text=wf1.Name;
Label2.Text=wf1.EMail;
}

(0)

相关推荐

  • asp.net 页面传值的几个方法

    在这篇文章里,azamsharp 将为我们介绍一些ASP.NET页面传值的方式.本文所举的例子非常简单,仅仅包含了一个文本框和几个按钮,当按钮点击时文本框中的字符串将会以不同的方式传递到另外的页面去. 1. Response.Redirect (或称 Query String 方式.URL方式) 复制代码 代码如下: Response.Redirect("WebForm5.aspx"); 首先让我们看看 Response.Redirect 方法,这应该是最简单的了,当我们点击Respo

  • ASP.Net的Application介绍

    在ASP.Net中Application用法与ASP是一样的,几乎是没有什么说的,但是它多了两个特别有用的事件,Application_OnBeginRequest和Application_OnEndRequest.他们的和原来的Application_OnStart和Application_OnEnd一样是放在global文件中的(注意这个文件在ASP中名字是global.asa,在ASP.Net中是global.asax). Application_OnStart是在整个ASP.Net应用首

  • asp.net页面传值测试实例代码(前后台)

    WebForm_1.aspx内容如下: 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm_1.aspx.cs" Inherits="页面传值.WebForm_1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu

  • ASP.NET 页面传值常用方法总结

    一.表单提交: 复制代码 代码如下: <formaction= "target.aspx" method = "post" name ="form1"> <input name = "param1" value ="1"/> <input name = "param2" value ="2"/> </form> ....

  • ASP.NET内置对象之Application对象

    新建一个网站,包括两个网页,代码如下: 1.Index.aspx代码:  复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Index.aspx.cs" Inherits="Index" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&

  • ASP.NET页面之间传值的方式之Application实例详解

    Application Application变量在整个应用程序生命周期中都是有效的,类似于使用全局变量一样,所以可以在不同页面中对它进行存取.它和Session变量的区别在于,前者是所有的用户共用的全局变量,后者是各个用户独有的全局变量. 举例来解释: 网站访问的计数器变量一般采用Application变量,多个请求访问时共享这一个变量,均可对它进行操作,该变量可以被整个应用程序的各个页面直接使用. 用户登陆的帐号名一般采用Session变量,多个请求访问时有各自的Session变量,只能对自

  • ASP.NET 跨页面传值方法

    1. 使用QueryString变量 QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法.但是对于传递数组或对象的话,就不能用这个方法了.下面是一个例子: a.aspx的C#代码 复制代码 代码如下: private void Button1_Click(object sender, System.EventArgs e) { string s_url; s_url = "b.aspx?

  • asp.net Reporting Service在Web Application中的应用

    原先刚装上Reporting Service时还觉得有点神秘,毕竟在做这个项目前还没有真正接触这个微软用于代替水晶报表的报表工具,而且微软似乎还不满足于一个报表工具那么简单. Reporting Services 是一种基于服务器的新型报表平台,部署在Microsoft® SQL Server™ 2000基础上,可用于创建和管理包含来自关系数据源和多维数据源的数据的表格报表.矩阵报表.图形报表和自由格式报表.可以通过基于 Web 的连接来查看和管理您创建的报表. Reporting Servic

  • ASP.NET中Application和Cache的区别分析

    相同点:1. 二者存储的变量的有效范围都是整个应用程序的生命周期.2. 二者都可以存贮对象. 不同点:1. application是在asp阶段使用的,后来升级到.net后,使用的是cache,但为了向前兼容,依然保留了application. 2. cache比application使用更加灵活,功能更强大.cache可以设置每一个item的优先级,当服务器内存不够时,将对cache进行压缩,将一些很长时间没使用的或者优先级低的item从cache中移去.3.cache中可设置某个item的依

  • ASP.NET实现页面传值的几种方法小结

    这三种方法是:QueryString,Session和Server.Transfer. 通过URL链接地址传递  send.aspx:  复制代码 代码如下: protected void Button1_Click(object sender, EventArgs e)    {        Request.Redirect("Default2.aspx?username=honge");    } receive.aspx: 复制代码 代码如下: string username

  • javascript静态页面传值的三种方法分享

    一:JavaScript静态页面值传递之URL篇能过URL进行传值.把要传递的信息接在URL上.Post.htm 复制代码 代码如下: <input type="text" name="username"><input type="text" name="sex"><input type="button" value="Post"><script

  • asp.net(c#)网页跳转七种方法小结

    ①response.redirect 这个跳转页面的方法跳转的速度不快,因为它要走2个来回(2次postback),但他可以跳 转到任何页面,没有站点页面限制(即可以由雅虎跳到新浪),同时不能跳过登录保护.但速度慢是其最大缺陷!redirect跳转机制:首先是发送一个http请求到客户端,通知需要跳转到新页面,然后客户端在发送跳转请求到服务器端.需要注意的是跳转后内部空间保存的所有数据信息将会丢失,所以需要用到session. 实例 Example that uses Redirect [C#;

  • Flutter页面传值的几种方式

    今天来聊聊Flutter页面传值的几种方式: InheritWidget Notification Eventbus (当前Flutter版本:2.0.4) InheritWidget 如果看过Provider的源码的同学都知道,Provider跨组件传值的原理就是根据系统提供的InheritWidget实现的,让我们来看一下这个组件. InheritWidget是一个抽象类,我们写一个保存用户信息的类UserInfoInheritWidget继承于InheritWidget: class Us

  • js实现页面跳转的几种方法小结

    按钮式: <INPUT name="pclog" type="button" value="GO" onClick="location.href='http://www.jb51.net/'"> 链接式: <a href="javascript:history.go(-1)">返回上一步</a> <a href="<%=Request.ServerV

  • asp.net简单页面控件赋值实现方法

    本文实例讲述了asp.net简单页面控件赋值的方法.分享给大家供大家参考,具体如下: /// <summary> /// 赋值 表名,控件名,要查询的唯一数据 /// </summary> protected void SetEvaluate(string TableName, string UpName, string Id) { ContentPlaceHolder cph = (ContentPlaceHolder)Page.Master.FindControl("

  • ASP.NET连接 Access数据库的几种方法

    web.config 第一种方法: <?xml version="1.0" encoding="utf-8"?> <!-- 有关如何配置 ASP.NET 应用程序的详细消息,请访问 http://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <appSettings> <add key="AccessConnString"

  • Vue父子模版传值及组件传值的三种方法

    这里是针对于vue1.0,如果要学2.0,建议大家去看官方文档 vue2.0 http://vuefe.cn/guide/ vue-router2.0https://router.vuejs.org/zh-cn/essentials/getting-started.html 第一种 <div id="example"> <my-component></my-component> </div> <script src="..

  • Java 多线程传值的四种方法

    其实大家都知道多线程传值有三种方式: 1:通过构造方法传递数据 2:通过变量和方法传递数据 3:通过回调函数传递数据 那么博主有个非常变态的需求,所以找出了第四种实现方式,先看效果图: 动态Cron4j调度器,我曾经发过类似的文章,可以去搜索一下. 点击执行走下边的代码,然后根据类名反编译 public static void executeCron4j(String packageClass){ try { Object taskObj = classNewInstance(packageCl

  • VUE的tab页面切换的四种方法

    1.静态实现方法: 效果图: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="widt

随机推荐