ASP.NET页面传值

一、使用Querystring

  QueryString是一种非常简单的传值方式,其缺点就是会把要传送的值显示在浏览器的地址栏中,并且在此方法中不能够传递对象类型的值。如果你想传递一个安全性不太重要或者是一个简单的数值时,用此方法最好不过了。下面的实例演示完成传值工作。

1、创建一个Web页面,命名为Default1.aspx

  2、在新建的Default1中放置一个Button1,在放置两个TextBox1,TextBox2

3、Button按钮创建click事件代码如下:

protected void Button1_Click(object sender, EventArgs e)

{

string url;

  url="Default2.aspx?name="+TextBox1.Text + "&pwd="+TextBox2.Text;

Response.Redirect(url);

}

4、新建另一个Web页面,命名为Default2.aspx

5、在Default2中放置两个Label1,Label2

在Default2.aspx.cs的Page_Load中添加如下代码:

protected void Page_Load(object sender, EventArgs e)

{

  Label1.Text=Request.QueryString["name"].ToString() ;

  Label2.Text=Request.QueryString["pwd"].ToString();

}

运行,即可看到传递后的结果了。

二、使用Session变量

  使用Session变量传值是一种最常见的方式了,此中方式不仅可以把值传递到下一个页面,还可以交叉传递到多个页面,直至把Session变量的值Remove后,变量才会消失。

演示示例如下:

1、创建一个Web页面,命名为Default1.aspx

  2、在新建的Default1中放置一个Button1,在放置两个TextBox1,TextBox2

3、为Button1按钮创建Click事件代码如下:

protected void Button1_Click(object sender, EventArgs e)

{

Session["Name"]=TextBox1.Text;

Session["Pwd"]=TextBox2.Text;

Response.Redirect("Default2.aspx");

}

4、新建另一个目标页面命名为Default2 .aspx

5、在Default2页面中放置两个Label1,Label2标签。

在Default2.aspx.cs的Page_Load中添加如下代码:

protected void Page_Load(object sender, EventArgs e)

{

Label1.Text=Session["Name"].ToString();

Label2.Text=Session["Pwd"].ToString();

// Session.Remove("Name");

// Session.Remove("Pwd");

}

运行后即可看到传递后的结果了。

三、使用Server.Transfer

演示示例如下:

1、创建一个Web页面,命名为Default1.aspx

  2、在新建的Default1中放置一个Button1,在放置两个TextBox1,TextBox2

3、Button1按钮创建Click事件代码如下:

protected void Button1_Click(object sender, EventArgs e)

{

Server.Transfer("Default2.aspx");

}

  4、在Default1.aspx.cs中创建两属性 Name, Pwd来存储TextBox1,TextBox2控件的值,代码如下:

  public partial class Default1 : System.Web.UI.Page

{

public String Name

{

get

{

return this.TextBox1.Text;

}

}

public string Pwd

{

get

{

return this.TextBox2.Text;

}

}

protected void Page_Load(object sender, EventArgs e)

{

}

protected void Button2_Click(object sender, EventArgs e)

{

Server.Transfer("Default2.aspx");

}

}

5、新建另一个目标页面命名为Default2.aspx

6、在Default2中放置两个Label1,Label2 标签控件。

在Default2.aspx.cs的Page_Load中添加如下代码:

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

Default1 myver;

myver = (Default1)Context.Handler;

this.Label1.Text=myver.Name;

this.Label2.Text = myver.Pwd;

}

}

四、 使用Cookie对象变量

  这个也是大家常使用的方法,与Session相比,Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合ASP.NET内置对象Request来使用。

  1、在Default1.aspx创建一个文本框TextBox1和一个按钮控件Button1。

2、在Default1.aspx.cs中添加下如代码

protected void Button1_Click(object sender, EventArgs e)

{

HttpCookie cookie_name = new HttpCookie("myname");

cookie_name.Value = this.TextBox1.Text;

Response.AppendCookie(cookie_name);

Server.Transfer("Default2.aspx");

}

3、Default2.aspx.cs中代码如下:

protected void Page_Load(object sender, EventArgs e)

{

  this.Label1.Text = Request.Cookies["myname"].Value.ToString();

}

五、 PostBackUrl()方法

1、 在页面default.1.aspx中的代码如下:

<body>

<form id="form1" runat="server">

<div>

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>

<asp:Button ID="Button1" runat="server" PostBackUrl="~/Default3.aspx"

Text="def3" />

</div>

</form>

</body>

2、在Default2.aspx.cs中的代码:

protected void Page_Load(object sender, EventArgs e)

{

if (PreviousPage != null)

{

TextBox textbox = (TextBox)this.PreviousPage.FindControl("TextBox1") ;

Response.Write(textbox.Text);

}

}

  注意,PreviousPage是Page类的一个新属性,PreviousPage返回一个Page对象,这个对象中的控件可能使用FindControl()方法来方问。

六、利用一个类来传递页面的值

  在Asp.net中创建一类,并取一个名字,如UserInfo,系统会自动将该类放在App_Code文件夹中。

其中类的代码如下:

public class UserInfo

{

public UserInfo()

{

//

//TODO:
在此处添加构造函数逻辑

//

}

private TextBox textName;

public TextBox TextName

{

get

{

return textName;

}

set

{

textName = value;

}

}

private TextBox textPwd;

public TextBox TextPwd

{

get

{

return textPwd;

}

set

{

textPwd = value;

}

}

private TextBox textEmail;

public TextBox TextEmail

{

get

{

return textEmail;

}

set

{

textEmail = value;

}

}

}

  2、在页面Default1.aspx中创建三个文本框和一个按钮,TextBox1,TextBox2,TextBox3三个文本框的ID分别为:TextName,TextPwd ,TextEmail代码见下面:

<body>

<form id="form1" runat="server">

<div>

<asp:TextBox ID="TextName
" runat="server"></asp:TextBox>

<asp:TextBox ID="TextPwd
" runat="server"></asp:TextBox>

<asp:TextBox ID="TextEmail
" runat="server"></asp:TextBox>

<asp:Button ID="Button1" runat="server" οnclick="Button1_Click" Text="Button" />

<br />

</div>

</form>

</body>

  3、在Default1.aspx.cs中的代码如下,参见上面和下面控件ID蓝色名称:

public UserInfo myyInfo

{

get

{

UserInfo info = new UserInfo();

info.TextName =TextName
;

info.TextPwd =TextPwd
;

info.TextEmail =TextEmail
;

return info;

}

}

protected void Button1_Click(object sender, EventArgs e)

{

  this.Button1.PostBackUrl = "~/Default2.aspx";

}

4、下面列出目标页面Default2.aspx上关键代码,

  在Default2.aspx文件的Page指令后面添加PreviousPageType指令,如下所示:

<%@ Page Language="C#" CodeFile="Default5.aspx.cs" Inherits="Default5" %>

<%@ PreviousPageType VirtualPath="~/Default1.aspx" %>

  5、在目标页面上创建三个标签控件Label1,Label2,Label3,分别用于显示上一个页面传过来的用户姓名,密码和电子邮件地址。

6、在Defautl2.aspx.cs中的代码如下:

protected void Page_Load(object sender, EventArgs e)

{

UserInfo myInfo = PreviousPage.myyInfo;

Label1.Text = myInfo.TextName.Text;

Label2.Text = myInfo.TextPwd.Text;

Label3.Text = myInfo.TextEmail.Text;

}

asp.net 汉字传参问题

传参

url="default1.aspx?f=G&v="+escape(v); 

调用

Request.QueryString["v"]

 



 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值