听说ViewState是保存页面一些信息的,可是我还是有些不明白??
1.像GridView中的数据是否也是保存在ViewState中的,如果是像那种一次取出很多的,然后有很多页的是否都保存在其中,那么当选择选择下一页它是再去操作数据库还是进行其他的操作?2.那种注册的时候,填写完成跳到一个其它页时,然后点后退时,原先填的信息还在,这是为什么,不是页面不保存在服务器的吗,为什么后退时还有?回传给同一个页面还好理解,跳其他页又返回就不清楚了3.像this.PreviousPage.Find("txtname").Text;这个是怎么实现的,它是用什么来取得那个数值的,它怎么会取到的啊,不是不保存页面吗?
1.像GridView中的数据是否也是保存在ViewState中的,如果是像那种一次取出很多的,然后有很多页的是否都保存在其中,那么当选择选择下一页它是再去操作数据库还是进行其他的操作?2.那种注册的时候,填写完成跳到一个其它页时,然后点后退时,原先填的信息还在,这是为什么,不是页面不保存在服务器的吗,为什么后退时还有?回传给同一个页面还好理解,跳其他页又返回就不清楚了3.像this.PreviousPage.Find("txtname").Text;这个是怎么实现的,它是用什么来取得那个数值的,它怎么会取到的啊,不是不保存页面吗?
2 . 我也不清楚到底是什么原因 - - 我估计是网页数据存放在一个缓存中 所以后退还有数据
3.. 不知道
2.原理应该是同与history.go(-1),有cookie来保存数据(猜测).
3.this.PreviousPage.Find("txtname").Text类似与getElementById的操作
我现在有个想法 是否可以将整个页面存进缓存中, 再存放在viewstate, 然后再viewstate从获取需要的内容
this.PreviousPage.Find("txtname").Text类似与getElementById的操作
可我问的是为什么还会取得上一页的那个值啊,那个值存哪里的啊?
再看一下取不取得到值,取不到就说明东西是存在ViewState里的(个人认为,不一定对)
1 :不可能全存在ViewState 中,而且datatable 在页面rend 完了后就不存在了
重新点下一页只是重新从数据库取再邦定的过程
2 :真的是跳转到其他页面了吗?就一个页面,只是不同情况不同的显示吧了,如果是跳转到其他页面是保存不了值的,类似.response.redrict();
3 : 不晓得,没用过。
也就把这个这个数据给清楚了。
3.是取的页面提交之后,Request会把你提交的页面传输到服务器去,再对回传的数据来处理等到的数据。
1. 没有直接保存值,它只是保存控件的状态。GridView保存了所有你定义的Column结构、所有的样式等等,自身几十个信息,但是并不直接保存数据。不过,例如你在模板中使用了一个DropdownList来设计界面,当GridView保存这个列的ViewState时候,就会保存这个模板的ViewState,而保存这个模板的ViewState就会保存模板中控件的ViewState,也就会保存DropdownList的ViewState,因此保存GridView的ViewState的时候也就会保存这个DropdownList的各种状态值,其中就包括了这个DropdownList的Items中的所有值(DropdownList还有很多其他的状态,例如ForColor等也都保存在ViewState中)。因此,GridView并没有直接保存值,但是如果值已经被化身为内部控件的某个状态,也就被ViewState保存了。可以说,一个GridView的ViewState可能保存几千甚至上万个状态值,你所说的数据值如果作为控件状态就会被保存,但是只是占GridView的ViewState数据的一部分而已。
2. 页面上总是有信息保存ViewState的。默认的asp.net页面,你从客户端“源文件”上可以看到 __ViewState 这个隐藏域。它在浏览器上毫无用处,页面显示时服务器把它写到浏览器端,当页面回发时(HTTP POST)再跟其它数据一样提交回服务器。它在浏览器与服务器之间丢来丢去。如果把它保存在服务器端并不输出,那么在 __ViewState 中也要有服务器端ViewState的保存对象的一个索引信息。因此,如果“重新”提交前边操作过的某个页面的 HTTP Post 数据,一定包含前边那个页面的ViewState信息。
3. 在页面a进行提交时,提交的数据集合可能提交给a页面,也可能提交给b页面。提交到b页面时,如果在服务器端创建a页面实例,并且把这个数据集合再提交给这个a页面实例,这就相当于b和a两个页面的两个实例分别得到了提交的数据集合。当指令this.PreviousPage执行时,就是这样从b页面又得到了一个a页面实例。
您说的2 的意思是可以理解为服务器端也可以存储ViewState的索引,不知道这样的索引能存几个页面的ViewState索引,如果不存ViewState对象光存索引可行不?可能您说ViewState存在客户端,那么意思是一个页面内的ViewState的信息可能包含其它页面的ViewState信息,或者说ViewState 可以存在服务器端了,那么不跟Session 类似了!如果不对还请指教,学.net 不久还。谢谢!
这当然是浏览软件自身的功能设计决定了。如果我们自己开发一个浏览器,我们也放上一个“退回”按钮,结果我们提交的数据不对,那么这个提交看起来就跟ie的提交的含义完全不同了。从服务器角度,丝毫不关心“退回”这个概念。http是一种无状态的协议,服务器只是知道客户端又有一个新的请求到来,才不管它是不是退回操作能。
你说GridView只保存当前页面的一些状态,但像 GridView中下面写的1、2、3、4……等页面他不是一下子要取出很多数据,而当点下一页时又要重新从数据库中取,那后面几页那些数据不是没用了啊,而且每次取都要那么多数据,用到的却就一个页面的数据