昨天我接受了采访,小组问我这个问题。
答案 0 :(得分:4)
以视图状态存储的项目作为HTML在隐藏控件中传输到客户端的浏览器,并在用户从该页面发布时发送回服务器(详细信息来自必不可少的ViewState: All You Wanted to Know):
1)ASP.NET开始渲染页面。使用如下所示的自定义格式序列化当前ViewState中的所有对象:t<1234567890;t<p<l<prpA;prpB;prpC;>;l<valA;valB;valC;>>;
2)序列化数据被编码并写入ASP.NET页面表单上的HTML隐藏控件,它看起来像这样(模拟数据):dDwxMjM0NTY3ODkwO3Q8cDxsPHBycEE7cHJw
3)此时项目在客户端的浏览器上潜伏着:你可能会说他们正在“休眠”。
4)如果客户端发布了页面,ASP.NET会再次将视图状态数据解码并反序列化为对象,并且它们“生存”直到请求结束(或者直到它们被写入另一个页面)。
答案 1 :(得分:3)
它存在直到您当前的页面存在。回发操作完成后,ViewState会在客户端中保留特定页面控件的值。然后用户请求另一页面上一页面数据不再可用。