不可或缺的ASP.NET内置对象小结

2020-04-30 12:01:01王冬梅

(6) Page.LoadComplete 事件:在页生命周期的加载阶段结束时发生
(7) Page.PreRender事件 :在加载 Control 对象之后、呈现之前发生。 (继承自 Control。)
(8) Page.PreRenderComplete 事件:在呈现页内容之前发生

四、ViewState对象

视图状态,在 ASP .NET 中,当一个表单被提交时,表单会连同表单值一起出现在浏览器窗口中。如何做到的呢?这是因为 ASP .NET 维持了您的 ViewState。 ViewState 会在页面被提交到服务器时表明它的状态。这个状态是通过在带有 < form runat=“server”> 控件的每个页面上放置一个隐藏域定义的。
这个对象是ASP.NET中特有的对象,在其他语言的后端技术中没有这个对象

protected void Page_Load(object sender, EventArgs e)
    {
      if (!IsPostBack)//如果是第一次访问
      {
        //先将Count的值设为0,并且保存在ViewState中
        ViewState["count"] = 0;
      }
    }
    protected void btnAdd_Click(object sender, EventArgs e)
    {
      //每次点击按钮先取出ViewState中的值并且累加之后再次赋给ViewState
      ViewState["count"] = Convert.ToInt32(ViewState["count"]) + 1;
      Literal1.Text = ViewState["count"].ToString();
    }
  }

使用ViewState实现页面信息的保存

保存数据

ViewState对象存储数据[键值对]Key=Value

取出数据

根据Key值取出Value值

总结

(1) ViewState中保存的数据全部被转换成object类型,取出时务必强制转换成特定类型
(2) ViewState只能在同一个页面的连续多次请求之间保存信息,页面跳转后信息就会丢失

ViewState的本质

ViewState的本质是一个隐藏域,和原始的.aspx文件中的多出来的标签一样,都是一个隐藏域,第一次创建ViewState对象其实是创建了一个隐藏域

五、Session对象

使用方式和ViewState相似
Session对象用于存储在多个页面调用之间特定用户的信息。Session对象只针对单一网站使用者,不同的客户端无法相互访问。Session对象中止联机机器离线时,也就是当网站使用者关掉浏览器或者超过设定Session对象的有效时间,Session对象变量就会关闭。

1.Session的原理

Session是服务器将客户端的数据代替客户端做出对应的保存,问题是不同用户在选择商品时,Session是如何区分不同用户的选择?
(1) 服务器根据SessionID来区分不同的用户,它是一个很长的字符串
(2)SessionID在用户第一次访问时由服务器产生并由用户浏览器保存
(3)用户每次的操作,浏览器在向服务器请求时都会带着自己的SessionID

Web服务器是如何判断用户是第一次请求并为其生成SessionID?