黑马程序员技术交流社区

标题: 做项目中遇到的技术问题 [打印本页]

作者: 江湖一浪人    时间: 2013-6-12 18:01
标题: 做项目中遇到的技术问题
ASP.NET 中四种状态管理机制:ViewState,Cookie,Session,Application.怎样确定用哪种状态好?分别用在什么场合好?
今天在做项目时碰到好几个状态管理机制的问题,不知道用哪种状态管理好。求大神们详细讲解~~~~~~~,感激不尽~~~~~~~~


作者: 一直在努力    时间: 2013-6-12 18:17
ViewState      页面级
Cookie           客户端
Session          服务器
Application     整个网整启动时,IIS停掉

作者: 许庭洲    时间: 2013-6-12 18:21
本帖最后由 许庭洲 于 2013-6-12 18:23 编辑

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1. Label版本的值存到了ViewState中,TextBox版本的不用存,因为TextBox就是input,自己就会提交给服务器,不需要隐藏字段。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2. 使用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();
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3. 使用Session变量
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.使用Application 对象变量
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();
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

作者: ljh4282158    时间: 2013-6-12 18:23
ViewState是ASP.NET的核心机制: 是用来 保存ASP.NET控件解析转换成HTML控件的状态,页面上所有服务器空间的状态信息都会保存到页面的viewstate隐藏域中。客户端向服务器端发送请求时,viewstate数据也会发过去,服务器就会根据发送过来的viewstate,可以解析,从而html空间对应asp.net空间
作者: ljh4282158    时间: 2013-6-12 18:25
Session cookie application 的区别
名称                使用范围          存储位置         存放数据类型         生命周期
Session        特定用户        服务器端        Object类型          可自行设置
Cookie        特定用户        客户端        String类型               可自行设置
Application        所有用户        服务器端        Object类型          无


求技术分


作者: 胡章诚    时间: 2013-6-12 18:29
学习了,这种问题对我来说只能观望啊,不过大家多讨论这样的问题,有价值,大家一起说,把它总结一下那就perfict了
作者: 江湖一浪人    时间: 2013-6-12 18:45
楼上各位讲的都好详细,受益匪浅!谢谢!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2