ASP。NET面面传参(2009-02-07 15:43:29)标签:杂谈 分类:Asp.net
asp.net 中传参的方法有几种
具体用法,总结一下,希望自己不要犯类似的错误!
1,QueryString
这是最简单的传值方式
就要是接忙收URL 中的参数;
aa.aspx 中,
string s_url="bb.aspx?name="+this.label.text;
Response.Redirect(s_url);
bb.aspx 中
Request.QueryString["name"];
2,使用Application 变量,这个对象的作用域是全局的,对所有用户都有效
主是方法是 lock() 和 unlock()
aa.aspx中
Application["name"]=this.label.text;
Server.Tansfer("bb.aspx");
bb.aspx 中
Application.lock();
string name=Application["name"].ToString();
Application.unlock();
3.Session 用于存储个人的信息
aa.aspx
Session["name"]=this.label.text;
bb.aspx
string name=Sessin["name"].ToString();
4.Cookie a.aspx的C#代码
private void Button1_Click(object sender, System.EventArgs e)
{
HttpCookie cookie_name = new HttpCookie("name");
cookie_name.Value = Label1.Text;
Reponse.AppendCookie(cookie_name);
Server.Transfer("b.aspx");
}
b.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{
string name;
name = Request.Cookie["name"].Value.ToString();
}
5. 使用Server.Transfer方法
Server.Transfer 方法还有另一个参数——"preserveForm"。如果你设置这个参数为 True,比如:Server.Transfer("WebForm2.aspx", True), 那么 query string 和任何 form 变量都会同时传递到你定位的页面。例:WebForm1.aspx 有一个文本框名为 TextBox1,你利用 preserveForm 为 True 传递到 WebForm2.aspx,你仍然可以用 Request.Form("TextBox1") 来取得文本框的值。
这种技术对向导式的多页面输入很有用.
总结:Response.Redirect 简单地告诉浏览器访问另一个页面。Server.Transfer 有利于减少服务器请求,保持地址栏 URL 不变,允许你将 query string 和 form 变量传递到另一个页面。
另外表单Post的提交方式在Response.Redirect下是没有用的.
在使用Server.Transfer时还可以通过Context来传值.比如在webform1里添加一个context的item:
this.Context.Items.Add("test", "abcdef");
那么就可以在webform2里能过下列代码得到这个item值
this.Context.Items["test"].ToString()
这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效。
a.aspx的C#代码
public string Name
{
get{ return Label1.Text;}
}
private void Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer("b.aspx");
4.Cookie a.aspx的C#代码
private void Button1_Click(object sender, System.EventArgs e)
{
HttpCookie cookie_name = new HttpCookie("name");
cookie_name.Value = Label1.Text;
Reponse.AppendCookie(cookie_name);
Server.Transfer("b.aspx");
}
b.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{
string name;
name = Request.Cookie["name"].Value.ToString();
}
5. 使用Server.Transfer方法
Server.Transfer 方法还有另一个参数——"preserveForm"。如果你设置这个参数为 True,比如:Server.Transfer("WebForm2.aspx", True), 那么 query string 和任何 form 变量都会同时传递到你定位的页面。例:WebForm1.aspx 有一个文本框名为 TextBox1,你利用 preserveForm 为 True 传递到 WebForm2.aspx,你仍然可以用 Request.Form("TextBox1") 来取得文本框的值。
这种技术对向导式的多页面输入很有用.
总结:Response.Redirect 简单地告诉浏览器访问另一个页面。Server.Transfer 有利于减少服务器请求,保持地址栏 URL 不变,允许你将 query string 和 form 变量传递到另一个页面。
另外表单Post的提交方式在Response.Redirect下是没有用的.
在使用Server.Transfer时还可以通过Context来传值.比如在webform1里添加一个context的item:
this.Context.Items.Add("test", "abcdef");
那么就可以在webform2里能过下列代码得到这个item值
this.Context.Items["test"].ToString()
这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效。
a.aspx的C#代码
public string Name
{
get{ return Label1.Text;}
}
private void Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer("b.aspx");