5种C#传值方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5种C#传值⽅法
1.QueryString 是⼀种⾮常简单的传值⽅式,他可以将传送的值显⽰在浏览器的地址栏中。

如果是传递⼀个或多个安全性要求不⾼或是结构简单的数值时,可以使⽤这个⽅法。

但是对于传递数组或对象的话,就不能⽤这个⽅法了。

下⾯是⼀个例⼦:
按 Ctrl+C
复制代码
System.EventArgs e) {
string s_url; s_url = "b.aspx?name=" + Label1.Text; Response.Redirect(s_url ); }
b.aspx 中C#代码private void Page_Load(object sender, EventArgs e) { Label2.Text = Request.QueryString["na me"]; }query 传值⼜分类post ,get 格式如://post 请求 string name = Request["name"].toString(); string name =Request.Form.Get("name").toString();
//get 请求
string name = Request.QueryString["name"].toString(); 但我发现 ⽆论是否是post 与get 传值都可⽤string name = Request["name"].toString();表单提交中get 和post ⽅式的区别归纳如下⼏点:
1. get 是从服务器上获取数据,post 是向服务器传送数据。

2. get 是把参数数据队列加到提交表单的ACTION 属性所指的URL 中,值和表单内各个字段⼀⼀对应,在URL 中可以看到。

post 是通过HTTP post 机制,将表单内各个字段与其内容放置在HTML HEADER 内⼀起传送到ACTION 属性所指的URL 地址。

⽤户看不到这个过程。

3. 对于get ⽅式,服务器端⽤Request.QueryString 获取变量的值,对于post ⽅式,服务器端⽤Request.Form 获取提交的数据。

4. get 传送的数据量较⼩,不能⼤于2KB 。

post 传送的数据量较⼤,⼀般被默认为不受限制。

但理论上,IIS4中最⼤量为80KB ,IIS5中为100KB 。

5. get 安全性⾮常低,post 安全性较⾼。

2. 使⽤Application 对象变量
Application 对象的作⽤范围是整个全局,也就是说对所有⽤户都有效。

其常⽤的⽅法⽤Lock 和UnLock 。

a.aspx 的C#代码
private void Button1_Click(object sender, System.EventArgs e)
{
Application["name"] = Label1.Text;
Server.Transfer("b.aspx");
}
b.aspx 中C#代码
private void Page_Load(object sender, EventArgs e)
{
string name;
Application.Lock();
name = Application["name"].ToString();
Application.UnLock();
}
3. 使⽤Session 变量
想必这个肯定是⼤家使⽤中最常见的⽤法了,其操作与Application 类似,作⽤于⽤户个⼈,所以,过量的存储会导致服务器内存资源的耗尽。

a.aspx 的C#代码
private void Button1_Click(object sender, System.EventArgs e)
{
Session["name"] = Label.Text;
}
b.aspx 中C#代码
private void Page_Load(object sender, EventArgs e)
{
string name;
name = Session["name"].ToString();
}
4. 使⽤Cookie 对象变量
这个也是⼤家常使⽤的⽅法,与Session ⼀样,其是什对每⼀个⽤户⽽⾔的,但是有个本质的区别,即Cookie 是存放在客户端的,⽽session 是存放在服务器端的。

⽽且Cookie 的使⽤要配合 内置对象Request 来使⽤。

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⽅法把流程从当前页⾯引导到另⼀个页⾯中,新的页⾯使⽤前⼀个页⾯的应答流,所以这个⽅法是完全⾯象对象的,简洁有效。

a.aspx的C#代码
public string Name
{
get{ return Label1.Text;}
}
private void Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer("b.aspx");
}
b.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{
a newWeb; //实例a窗体
newWeb = (source)Context.Handler;
string name;
name = ;
}
下⾯介绍⼀下传值缺点和优点
cookie
⽅式:将数据存在客户端的经典⽅法。

缺点:安全性低、受客户端设置限制、⼀个站点仅存20个cookie,每个容量4096字节。

Session
⽅式:将⽤户数据存储在服务端。

特点:中可以设置session的存储⽅式、位置、SessionID的保存是否依赖cookie。

可以直接存储对象。

缺点:中有失效的隐患
Cache
⽅式:将⽤户数据存储在服务端数据缓存中。

特点:可以⼤⼤提⾼效率。

可以直接存储对象。

Appliction
⽅式:将数据存储于此,相当于全局变量。

特点:可以直接存储对象。

整个站点的共享数据
ViewState
⽅式:特有机制,⽤来恢复页⾯状态。

特点:将页⾯各控件及其所存数据序列化存在name为_ViewState的隐藏域中。

缺点:存在HTML中,安全性较低。

可以设置加密和验证,但数据量会⼤增、效率有影响。

Static
⽅式:将数据存于静态变量中。

特点:利于提⾼效率。

缺点:若⽤不好会致使⽤户或页⾯间数据紊乱,造成极⼤的隐患。

建议只赋值⼀次,绝对禁⽌为单个⽤户⽽更改此值。

相关文档
最新文档