asp.net项目页面间传值的几种方式(部分转载)

来源:互联网 发布:hadoop2.6源码阅读 编辑:程序博客网 时间:2024/06/05 02:20

由于本人正在做ASP.net的web端开发,涉及到很多页面间传值,于是在此做一下整理方便以后进行查阅。

这里都是介绍在一个页面进行赋值,传递到另外一个页面中:赋值页面:Manage.aspx   传递页面:Detail.aspx。

1.使用QueryString方法

Manage.aspx.cs代码:

 Response.Redirect("Detail.aspx?loId=" + ViewState["ID"].ToString() + "&Id=" + this.lblId.Text);

Detail.aspx.cs代码:

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            RightCheck("32");                                         //权限检测
            string temp_Id = Request.QueryString["Id"];/
            this.lblId.Text = Request.QueryString["loId"];
            if (!string.IsNullOrEmpty(temp_Id))            
            {
                if (int.TryParse(temp_Id, out hoId)) 

//尝试转换为int型,如果字符串为空,则抛出ArgumentNullException异常;如果字符串内容不是数字,则抛出FormatException异常;如果字符串内容所表示数字超出int类型可表示的范围,则抛出OverflowException异常;
                {
                    ViewState["ID"] = temp_hoId;          //传递地址参数
                }
                else
                {
                    Response.Redirect("Manage.aspx");//跳转到管理页面
                    return;
                }

…………

}

}

}


2.Session传值方法

引用百度百科对Session作出的在Web端的解释:Web中的Session指的就是用户在浏览某个网站时,从进入网站到关闭这个网站所经过的这段时间,也就是用户浏览这个网站所花费的时间。

目前ASP的开发人员都正在使用Session这一强大的功能,但是在他们使用的过程中却发现了ASP Session有以下缺陷:
进程依赖性
ASP Session状态存于IIS的进程中,也就是inetinfo.exe这个程序。所以当inetinfo.exe进程崩溃时,这些信息也就丢失。另外,重起或者关闭IIS服务都会造成信息的丢失。
Session状态使用范围的局限性
当一个用户从一个网站访问到另外一个网站时,这些Session信息并不会随之迁移过去。例如:新浪网站的WWW服务器可能不止一个,一个用户登录之后要去各个频道浏览,但是每个频道都在不同的服务器上,如果想在这些WWW服务器共享Session信息怎么办呢
Cookie的依赖性
实际上客户端的Session信息是存储在Cookie中的,如果客户端完全禁用掉了Cookie功能,他也就不能享受到了Session提供的功能了。
鉴于ASP Session的以上缺陷,微软的设计者们在设计开发 ASP .NET Session时进行了相应的改进,完全克服了以上缺陷,使得ASP .NET Session成为了一个更加强大的功能。
这里在Manage.aspx.cs中通过文本框的值传给Session:
Session["currentuser"] = this.cu.Text.Trim();
    Session["password"] = this.psd.Text.Trim();
    Response.Redirect("Detail.aspx");
再在Detail.aspx.cs后台将session值再传给对应的文本框即可。
以下部分为引用:
3.使用Application对象变量传值:
Manage.aspx.cs代码:
Application.Lock();
            Application["currentuser"] = this.cu.Text.Trim();
            Application["psd"] = this.psd.Text.Trim();
            Application.UnLock();
 Server.Transfer("ObtainValue.aspx");
 
Detail.aspx.cs代码:
Application.Lock();
               this.cu.Text = Application["currentuser"].ToString();
               this.psd.Text = Application["psd"].ToString();
               Application.UnLock();
  解析:Application.Lock和Application.UnLock一般配对出现,用于锁住Lock与UnLock之间的所有代码(注意不光锁住对于Application的赋值)。Lock(obj) 于用锁住obj对象,obj对象必须是全局对象(如:Application)。网站内任何一个网页执行Application.Lock的时候,整站中所有关于Application的操作都会被锁定延时执行。(包括:Application赋值和Application读取);而Lock(obj)则不会影响其他没有写Lock(obj)的页面。Application.Lock/UnLock比较安全,因为它是全局锁定所有的Application的,而Lock(obj)则更灵活,因为另一页面中如果没有写Lock(obj)则可以修改其他页面Lock住的内容。
4、使用Cookie对象变量:

 Manage.aspx.cs代码:

HttpCookie cookieName = new HttpCookie("currentuser");
cookieName.Value = this.currentuser.Text.Trim();
Response.AppendCookie(cookieName);


HttpCookie cookiePwd = new HttpCookie("pwd", this.psd.Text.Trim());
Response.AppendCookie(cookiePwd);


Server.Transfer("Detail.aspx");


Detail.aspx.cs代码:


this.currentuser.Text = Request.Cookies["currentuser"].Value.ToString();
            this.psd.Text = Request.Cookies["psd"].Value.ToString();
  解析:与Session一样,其是什对每一个用户而言的,但是有个本质的区别,即Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合ASP.NET内置对象Request来使用。


5、使用Server.Transfer方法:


  Manage.aspx.cs代码:
public string currentuser
        {
            get { return this.currentuser.Text.Trim(); }
        }


        public string psd
        {
            get { return this.psd.Text.Trim(); }
        }


        protected void btnTransferValue_Click(object sender, EventArgs e)
        {
            Server.Transfer("Detail.aspx");
        }


 Detail.aspx.cs代码:

private void TransferValue()
        {
            Manage manage;
            manage = (Manage)Context.Handler;
            this.currentuser.Text = manage.currentuser;
            this.psd.Text = manage.psd;
        }



附:cookie 和session 的区别:

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能。考虑到减轻服务器性能方面,应当使用COOKIE。

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

5、所以个人建议:将登陆信息等重要信息存放为SESSION,其他信息如果需要保留,可以放在COOKIE中。



0 0
原创粉丝点击