.NET中页面传值方式

1. QuerySting
  QueryString是一种非常简单的传值方式,其缺点就是会把要传送的值显示在浏览器的地址栏中,并且在此方法中不能够传递对象。此方法适用于传递一个安全性不是那么重要或者是一个简单的数值,示例:

利用url和request.QueryString[]来传递
--a.aspx中C#代码
private void button1_click(object sender, System.EventArgs e)
{
     string url;
     url = "b.aspx?name="+ "root" +"&password" + label1.Text;
     response.redirect(url);
}

--b.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{
	 label1.Text = request.QueryString["name"];
     label2.Text = request.QueryString["password"];
}

QueryString传值又分类post ,get格式如:

//post请求
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传送的数据量较大,一般被默认为不受限制;
	5) get安全性非常低,post安全性较高。

2. Window.location.href

JavaScript中写

--login.aspx中的JS代码,也可以单独放在JS脚本里
 $("#button1").click(function () {
 
 		var name=$("#name1").text();
        var password=$("#password").text();
        var sex=$("#sex1").text();
        window.location.href = "main.aspx?name=" + name + "&password" + password +"&sex" +"sex";
})
--在main.aspx中的JS

function getQueryString(name) {

		//获得当前页面URL的某个URL参数        
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
        var r = window.location.search.substr(1).match(reg);

		//开始匹配,找到了返回对应URL值,没找到返回NULL
        if (r != null)
        	 return unescape(r[2]); 
        return null;
}

window.location 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面


3. Session

使用Session变量传值不仅可以把值传递到下一个页面,还可以交叉传递到多个页面,直至把Session变量的值removed后,变量才会消失。示例:

--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的使用要配合ASP.NET内置对象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 = newWeb.Name;
}

6. 比较各个传值方式的优缺点

Session
-> 方式:将用户数据存储在服务端
-> 特点:asp.net中可以设置session的存储方式、位置、SessionID的保存是否依赖cookie,可
以直接存储对象
->缺点:asp.net中有失效的隐患

cookie
-> 方式:将数据存在客户端的经典方法
-> 缺点:安全性低、受客户端设置限制、一个站点仅存20个cookie,每个容量4096字节

Cache
-> 方式:将用户数据存储在服务端数据缓存中
-> 特点:可以大大提高效率。 可以直接存储对象
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值