您的位置:首页 > 编程语言 > C#

C#网页参数传递的代码如何写?

2009-03-17 14:58 302 查看
把某个变量的值从一个aspx传给给另外一个aspx程序有下面的方法:
1。 用Session传递。
ASP.NET 允许您使用会话状态(HttpSessionState 类的一个实例)保存每个活动 Web 应用程序会话的值。
(有关概述,请参阅会话状态。)

会话状态与应用程序状态相似,不同的只是会话状态的范围限于当前的浏览器会话。如果不同的用户正在使用您的应用程序,每个用户都将有一个不同的会话状态。此外,如果同一用户在退出后又返回您的应用程序,该用户也将有一个不同的会话状态。

会话状态是用于存储会话特定信息的键/值词典结构,这些信息需要在服务器往返行程之间和对页的请求之间进行维护。有关更多信息,请参阅会话状态。

会话状态使您可以:

唯一标识浏览器或客户端设备请求,并将这些请求映射到服务器上的单独会话实例。
在服务器上存储特定于会话的数据,以用于同一个会话内的多个浏览器或客户端设备请求。
引发适当的会话管理事件。此外,可以利用这些事件编写应用程序代码。
一旦将应用程序特定的信息添加到会话状态中,服务器就会管理该对象。根据您指定的选项,可以将会话信息存储在 Cookie 中、进程外服务器中或 SQL Server 中。有关用法建议,请参阅状态管理建议。

a中赋值
Session("test")=textbox1.Text;

b中取值

string strtext=Session("test").Tostring();
2.Url直接传递 (hbxtx(xy) 所说的)
查询字符串是附加到页的 URL 末尾的信息。下面是一个典型的示例:

http://www.contoso.com/listwidgets.aspx?category=basic&price=100
在以上 URL 路径中,查询字符串以问号 (?) 开始,并包含两个属性/值对:一个名为“category”,另一个名为“price”。

查询字符串提供一种维护某些状态信息的简单但有限的方法。例如,查询字符串是将信息从一页传送到另一页的简便的方法(例如,将产品号从一页传送到将处理该产品号的另一页)。但是,大多数浏览器和客户端设备受到 URL 的长度最多为 255 个字符的限制。此外,查询值通过 URL 向 Internet 公开,因此在某些情况下,安全性可能成问题。

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

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

3.通过cookies传递
Cookie
Cookie 是少量的数据,这些数据或者存储在客户端文件系统的文本文件中,或者存储在客户端浏览器会话的内存中。Cookie 包含随页输出一起由服务器发送到客户端的特定于页的信息。Cookie 可以是临时的(具有特定的过期时间和日期),也可以是永久的。

可以使用 Cookie 来存储有关特定客户端、会话或应用程序的信息。Cookie 保存在客户端设备上,当浏览器请求某页时,它会将 Cookie 中的信息连同请求信息一起发送。服务器可以读取 Cookie 并提取它的值。一项常见的用途是存储标记(可能已加密),以指示该用户已经在您的应用程序中进行了身份验证。
示例
[Visual Basic, C#] 下面的示例创建名为“LastVisit”的新 Cookie,将该 Cookie 的值设置为当前日期和时间,并将其添加到当前 Cookie 集合中。Cookie 集合中的所有 Cookie 均通过 HTTP 输出流在 Set-Cookie 头中发送到客户端。

[C#]
HttpCookie MyCookie = new HttpCookie("LastVisit");
DateTime now = DateTime.Now;

MyCookie.Value = now.ToString();
MyCookie.Expires = now.AddHours(1);

Response.Cookies.Add(MyCookie);
示例
[Visual Basic, C#] 下面的示例依次通过客户端发送的所有 cookie,并将每个 cookie 的名称、过期日期、安全参数和值发送到 HTTP 输出。

[C#]
int loop1, loop2;
HttpCookieCollection MyCookieColl;
HttpCookie MyCookie;

MyCookieColl = Request.Cookies;

// Capture all cookie names into a string array.
String[] arr1 = MyCookieColl.AllKeys;

// Grab individual cookie objects by cookie name.
for (loop1 = 0; loop1 < arr1.Length; loop1++)
{
MyCookie = MyCookieColl[arr1[loop1]];
Response.Write("Cookie: " + MyCookie.Name + "<br>");
Response.Write("Expires: " + MyCookie.Expires + "<br>");
Response.Write ("Secure:" + MyCookie.Secure + "<br>");

//Grab all values for single cookie into an object array.
String[] arr2 = MyCookie.Values.AllKeys;

//Loop through cookie Value collection and print all values.
for (loop2 = 0; loop2 < arr2.Length; loop2++)
{
Response.Write("Value" + loop2 + ": " + arr2[loop2] + "<br>");
}
}
4。应用程序状态
ASP.NET 允许您使用应用程序状态(HttpApplicationState 类的一个实例)来保存每个活动 Web 应用程序的值。应用程序状态是可从 Web 应用程序的所有页访问的全局存储机制,因此可用于存储在服务器往返行程间和各页间需要进行维护的信息。有关更多信息,请参阅应用程序状态。

应用程序状态是在对特定 URL 的每一请求期间创建的键/值词典结构。可以将特定于应用程序的信息添加到此结构以在页请求期间存储它。
5.在 Web 窗体页之间传递值
在代码中,使用属性的标准语法声明页上的一项或多项只读属性。返回要向下一页传递的属性值。
以下示例显示如何声明名为 Property1 的属性并将它的值设置为该页上文本框的值:

' Visual Basic
Public ReadOnly Property Property1() As String
Get
Return TextBox1.Text
End Get
End Property

// C#
public string Property1
{
get
{
return TextBox1.Text;
}
}
通过调用 Server 对象(HttpServerUtility 类)的 Transfer 方法调用下一页,并向其传递要将信息传递到的页的 URL。
以下示例显示如何从事件处理程序中调用名为 WebForm2 的页(在同一项目中):

' Visual Basic
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Server.Transfer("Webform2.aspx")
End Sub

// C#
private void Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer("Webform2.aspx");
}

“当a.aspx通过Server.Transfer跳转到b.aspx后,如何在b.aspx中获得a.aspx中textBox1的值”的问题,在ASP.NET中还有一个非常直接的实现方法。

简单的说,在b.aspx中可以通过Context.Handler来获得a.aspx,并通过Page.FindControl()来获得textBox1的值。以下是一段例子代码:

Page page= (Page)Context.Handler;
this.Label1.Text = ((TextBox)page.FindControl("TextBox1")).Text;

通过这段代码,当a.aspx中通过Server.Transfer跳转到b.aspx后,就可以在b.aspx中获得a.aspx中TextBox1控件的值。对于其他类型的控件也可以以同样形式访问。

需要说明的是,这里的TextBox1必须是一个Design-Time添加的Server Control。
参考资料:http://10131085.qzone.qq.com/blog/297
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: