A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 江湖一浪人 中级黑马   /  2013-6-12 18:01  /  1936 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

ASP.NET 中四种状态管理机制:ViewState,Cookie,Session,Application.怎样确定用哪种状态好?分别用在什么场合好?
今天在做项目时碰到好几个状态管理机制的问题,不知道用哪种状态管理好。求大神们详细讲解~~~~~~~,感激不尽~~~~~~~~

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

6 个回复

倒序浏览
ViewState      页面级
Cookie           客户端
Session          服务器
Application     整个网整启动时,IIS停掉

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 许庭洲 于 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();
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

评分

参与人数 1技术分 +2 收起 理由
杞文明 + 2

查看全部评分

回复 使用道具 举报
ViewState是ASP.NET的核心机制: 是用来 保存ASP.NET控件解析转换成HTML控件的状态,页面上所有服务器空间的状态信息都会保存到页面的viewstate隐藏域中。客户端向服务器端发送请求时,viewstate数据也会发过去,服务器就会根据发送过来的viewstate,可以解析,从而html空间对应asp.net空间

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
Session cookie application 的区别
名称                使用范围          存储位置         存放数据类型         生命周期
Session        特定用户        服务器端        Object类型          可自行设置
Cookie        特定用户        客户端        String类型               可自行设置
Application        所有用户        服务器端        Object类型          无


求技术分

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
学习了,这种问题对我来说只能观望啊,不过大家多讨论这样的问题,有价值,大家一起说,把它总结一下那就perfict了
回复 使用道具 举报
楼上各位讲的都好详细,受益匪浅!谢谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马