asp.net 页面传值的几个方法_实用技巧

在这篇文章里,azamsharp 将为我们介绍一些ASP.NET页面传值的方式。本文所举的例子非常简单,仅仅包含了一个文本框和几个按钮,当按钮点击时文本框中的字符串将会以不同的方式传递到另外的页面去。
1. Response.Redirect (或称 Query String 方式、URL方式)

复制代码 代码如下:

Response.Redirect("WebForm5.aspx");

首先让我们看看 Response.Redirect 方法,这应该是最简单的了,当我们点击Response.Redirect按钮后触发上面的那行代码即可。在这里跟大家分享一个小技巧:有些时候我们会把上面的代码放在try{ ... }catch() 中去,也就是说当我们捕获异常,并把异常传递给另一个网页。如果我们尝试这样做,也许会得到一个“System.Threading” 异常,这是因为我们跳转到了另外一个页面,而原来的页面线程仍然在运行中。可以这样来解决此问题:

复制代码 代码如下:

Response.Redirect("WebForm5.aspx",false);

这意味着告诉编译器去“WebForm5.aspx”, 同时“false”参数告诉编译器不要停止在原来页面上的活动, 这方面我们可以参见System.Threading类。
在下面的代码中,“txtName”是待传值的文本框的名字,那个跟在“?”后面的“Name” 是一个临时response变量的标志,它承载了txtName的值。

复制代码 代码如下:

private void Button1_Click(object sender, System.EventArgs e)
{
// Value sent using HttpResponse
Response.Redirect("WebForm5.aspx?Name="+txtName.Text);
}

OK,到此位置,我们已经完成了Response的传值。但是,我们在"WebForm5.aspx"中怎样接收传来的值呢?不要急,我们将在"WebForm5.aspx"的page_Load事件中写下面的代码。首先,我们要确认传来的值不是“null”,如果不是“null”,我们就可以用Label将这个值显示出来。
注:当我们使用Response.Redirect传递变量时,所有的变量都能在浏览器的URL中看到,我们不能用这种方法来传递重要的机密数据,如信用卡号等。

复制代码 代码如下:

if (Request.QueryString["Name"]!= null)
Label3.Text = Request.QueryString["Name"];

2. Cookies 方式
接下来是用cookies, Cookies由服务端创建,但保存在客户端,当我们点击“Cookies”按钮时,运行如下代码:

复制代码 代码如下:

HttpCookie cName = new HttpCookie("Name");
cName.Value = txtName.Text;
Response.Cookies.Add(cName);
Response.Redirect("WebForm5.aspx");

首先,我们创建了一个名叫“cName”的cookie实例,由于一个cookie实例可以保存多个值,我们需要告诉编译器这个cookie将保存“Name”值,并把txtName.Text的值赋给它,并把它加到"输出流” 中,并使用Response.Redirect输出到另外一个网页。
然后让我们看看怎样在目标页面中取出这个cookie中的值:

复制代码 代码如下:

if (Request.Cookies["Name"] != null )
Label3.Text = Request.Cookies["Name"].Value;

显然,步骤跟上一种方法非常相似,只是使用Request.Cookies代替了Request.QueryString。
注:一些浏览器是不支持Cookies的。
3. Session 变量
接下来我们看看在服务端维持的Session变量。 Session在用户向服务端发出首次请求时被创建,而在用户关闭浏览器或异常发生时终止(其实还有过期的情况)。下面的代码是用Session来传值的例子。 我们可以看到 Session 为用户创建了“Name” 键,并把TextBox的值赋给它。

复制代码 代码如下:

// Session 创建
Session["Name"] = txtName.Text;
Response.Redirect("WebForm5.aspx");
// 下面的代码显示如何从Session中取值
// 代码放在其它页面中
if(Session["Name"] != null)
Label3.Text = Session["Name"].ToString();

4. Application 变量
有些时候,我们需要一个值能够在所有的页面中访问,这时候我们可以使用Application变量。 如下列代码所示,一旦我们创建了Application变量并赋值,就可以在网站(项目)的所有页面中获得它。

复制代码 代码如下:

// 为Application变量赋值
Application["Name"] = txtName.Text;
Response.Redirect("WebForm5.aspx");
// 从Application变量中取出值
if( Application["Name"] != null )
Label3.Text = Application["Name"].ToString();

5. Server.Transfer方式(或称HttpContext方式)
我们还可以使用 Server.Transfer方式(或称HttpContext方式)在页面之间传递变量,此时,要传递的变量可以通过属性或方法来获得,使用属性将会比较容易一些。好,让我们在第一个页面中来写一个用来获得TextBox值的属性:

复制代码 代码如下:

public string GetName
{
get { return txtName.Text; }
}

我们需要使用Server.Transfer把这个值发送到另外一个页面中去,请注意Server.Transfer只是发送控件到一个新的页面去,而并不会使浏览器重定向到另一个页面。所以,我们我们在地址栏中仍然看到的是原来页面的URL。如下代码所示:
Server.Transfer("WebForm5.aspx");
接下来,我们到"WebForm5.aspx"看看:

复制代码 代码如下:

// You can declare this Globally or in any event you like
WebForm4 w;
// Gets the Page.Context which is Associated with this page
w = (WebForm4)Context.Handler;
// Assign the Label control with the property "GetName" which returns string
Label3.Text = w.GetName;

结束语:
如我们看到的那样,各种传值方式都各有优劣,在不同的情况下选择适当的方式是很重要的。

时间: 2024-11-02 14:55:37

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

先装了FRAMEWORK,后装IIS导致asp.net页面无法访问的解决方法_实用技巧

ASPX页面访问需要.net的支持. 请先检查是否安装了.NET, 打开IIS,在默认网站上点右键,如果没有ASP.NET选项卡则为没有安装或没有将.NET注册到IIS中. 1.没有安装,下 载.net framework 并安装,下载时注意版本,并不一定高版本就完全兼容低版本, 2.安装了但是没有注册到IIS中,开始->运行->cmd-> C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i

asp.net简单页面控件赋值实现方法_实用技巧

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

Asp.Net实现404页面与301重定向的方法_实用技巧

本文实例讲述了Asp.Net实现404页面与301重定向的方法.分享给大家供大家参考.具体实现方法如下: 从一种程度来讲301重定向与404页面没什么关系为什么我要拿到一起来讲来,因为都很简单实现,所在我就一起介绍一下了. 如何在 asp.net 中设置404页面的方法记录下来. 下边首先看看之前的设置方法,web.config文件中: 复制代码 代码如下: <configuration>     <system.web>         <customErrors mode

win2003服务器asp.net权限设置问题及解决方法_实用技巧

服务器asp.net权限设置问题及解决方法 本人服务器使用环境:WIN 2003 ASP.NET相对于ASP,设置权限方面有点不同,有一点儿设置错了都运行不到.在网上搜索到的都是很垃圾的答案,没有一个用得到的,下面是我自己设置并从中遇到的问题摸索后得到的经验,给大家分享. ASP.NET需要用到USERS组的权限,因为我也遇过很多次自己设置了权限之后发现网站运行不了,很郁闷.下面根据出现的问题,一点点解决,让你的ASP.NET运行起来.. 问题一: 未找到路径"C:\"的一部分. 说明

ASP.NET防范SQL注入式攻击的方法_实用技巧

一.什么是SQL注入式攻击?  SQL注入式攻击就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令.在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击.常见的SQL注入式攻击过程类如:  ⑴ 某个ASP.NET Web应用有一个登录页面,这个登录页面控制着用户是否有权访问应用,它要求用户输入一个名称和密码.  ⑵ 登录页面中输入的内容将直接用来构造动态的SQL命令,或

asp.net实现C#绘制太极图的方法_实用技巧

本文实例讲述了asp.net实现C#绘制太极图的方法.分享给大家供大家参考.具体如下: 成品图如下所示: html页面: 注意设置: 复制代码 代码如下: ContentType="Image/Jpeg" 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="TaiJiTu.aspx.cs" Inherits="TaiJiTu&qu

ASP.Net下载大文件的实现方法_实用技巧

本文实例讲述了ASP.Net下载大文件的实现方法.分享给大家供大家参考.具体分析如下: 当我们的网站需要支持下载大文件时,如果不做控制可能会导致用户在访问下载页面时发生无响应,使得浏览器崩溃.可以参考如下代码来避免这个问题. 关于此代码的几点说明: 1. 将数据分成较小的部分,然后将其移动到输出流以供下载,从而获取这些数据. 2. 根据下载的文件类型来指定 Response.ContentType .(参考OSChina的这个网址可以找到大部分文件类型的对照表:http://tool.oschi

ASP.NET缓存管理的几种方法_实用技巧

尽管缓存管理在Windows应用程序中已经不再是个问题,但在web环境下依然是个挑战.因为HTTP是一个无状态的协议并且web服务无法识别不同请求的用户.识别不同的请求究竟是哪个特定用户发出的,并且存储这些信息以便它在以后请求中能被重新使用,对我们来说非常重要.ASP.NET提供了很多特性用来在客户端和服务器端存储这些数据,但是有时我们会对"我们什么时候使用它们(哪个)"感到疑惑.在ASP.NET中,我们会遇到像Session,Application以及Cache这些对象,为了有效地在