现在的位置: 首页 > 综合 > 正文

ASP.NET中页面传值方式

2013年01月14日 ⁄ 综合 ⁄ 共 2427字 ⁄ 字号 评论关闭

以前总觉得页面传值是个很难的事情,今天才知道原来方法那么多!Session,Application,Cookies,QueryString,Server.Transfer,当页面内在刷新时,会将有些值丢失,这个时候可以使用ViewState!哇,如此多的方法。。。。。。

1.QueryString

最简单的页面之间传值的方式,缺点是会把要传的值显示在浏览器的地址栏里,因此一般是传不重要而且简单的参数值!不能传递对象,参数的长度不能大于1024字节,当参数中有中文的时候,需要使用HttpUlitity.UrlEncode方法来对参数进行编码和解码!

Default1:Response.Redirect("Default.aspx?a="参数值"");

Default2:Request.Querystring["a"]; 或者 Request["a"]; 都可以获取到参数值!

2.Session

此方式不仅可以将值传递到下一个页面,还可以将值交叉传递到多个页面,直到把Session变量的值Remove,变量才会消失;缺点是Session变量是存储在服务器端的,消耗服务器端的内存使用,客户端通过ID传回到服务器短检索Session变量值,由于Session存在TimeOut的问题,所以对客户的操作会产生影响!如果服务器端的内存不足时,可能引起Session的崩溃!所以在大的系统里不建议使用这个!

Default1:Session["a"] = b;

Default2:string C = Convert.ToString(Session["a"]);

3.Server.Transfer

稍微复杂一点,也麻烦一点!可是这种方式不会让你传的值在浏览器的地址栏里显示,是一种比较保险的传参方式,

还可以传递对象,使用这种方式要额外的写一些代码,用以创建一些属性,以便在下一个页面访问它!总体说来,使用这种方法是简洁的,同时是面向对象的!

使用这种方法的整体过程如下:

a.在页面添加必要的空间;

b.创建返回值的Get属性;

C.创建可以返回表单的按钮;

d.在按钮单击事件中调用Server.Transfer方法转移到指定的页面;

e.在第2个页面中,我们就可以用Context.Handler属性来获取前一个页面实例对象的使用;

综合实现上述步骤的代码如下:

源页面代码:

//创建返回值的Get属性

public string Name

{

       get{ return TextBox1.Text}

}

//调用Server.Transfer方法

private void Page_Load
(object sender, System.EventArgs e)
{
//create instance of source web form
WebForm1 wf1;
//get reference to current handler instance
wf1=(WebForm1)Context.Handler;
Label1.Text=wf1.Name;
}

其中WebForm1为你前面定义的CS中的页面名称,可以根据自己的需要进行设置;

4.Application

一般是相对于整个项目来说,相对静止的变量,如数据库连接变量,而那些针对每一个用户,每一个会话都有不同的变量的则不适用。通常Application的值在Configure中设置。也可以在Global.asx中指定。

因为应用程序和他存储的所有对象可以由不同的线程进行访问,所以最好只将很少修改的数据与应用程序范围一起存储。

Default1:Application["a"] = b;

Default2:string C = Application["a"] .ToString();

这是Application最简单的赋值和取值方式了,还可以传递对象、流化等等,我不是很明白,以后再补充!请那位知道的介绍些个知识让我学习一下!

5.Cookies

被称之为小甜点,存储在客户端是Asp.Net的会话状态将请求与会话关联的方式之一(还有一种是把值保存在浏览器的变量中,当浏览器关闭时结束)。也可以直接用于在请求之间存储数据,但随后数据将存储在客户端,并随每个请求一起传送到服务器端,浏览器对Cookies的大小有限制,只有小于4096字节的才能保证被接受!除了大小受限之外,还有不能保存对象,存在生命周期等缺点。

Default1:

            System.Web.HttpCookie hc = new HttpCookie("hc");
            hc.Value = "hc" + TextBox4.Text;
            Response.AppendCookie(hc);

Default2:string hc = Request.Cookies["hc"].Value.ToString()

6.ViewState
在一个页面的事件发生之后,页面可能被刷新,如果定义全局变量会被清零!这个时候就会用到ViewState,即ViewState是本页面函数直接的传值!它是保存在浏览器的Html代码中,随着页面的关闭,值消失!

Default1:ViewState["hc"] = hc;

Default2:string hc = ViewState["hc"].ToString();

小结:

1.使用Application存储很少修改但经常使用的数据;

2.使用Server.Transfer存储特定于某个会话或用户的数据,数据全部存储在服务器上,适合于存储短期、大量、敏感的数据;

3.将少量易失的数据存储在非持久的Cookies中,数据存储在客户端,当每次请求时发送到服务器,并在客户端执行完请求后失效;

4.将少量非易失的数据存储在持久的Cookies中,数据存储在客户端,知道失效,并在每次请求时发送到服务器端;

5.将少量请求特定的数据存储在ViewState中,数据从服务器短发送到客户端并返回到当前页面。

 

抱歉!评论已关闭.