ViewState是为了让整个web高效,运行更快。当form提交后,整个page中的控件的信息报存在form的viewstate中。(viewstate是自动创建的。)
page提交后。如果EnableViewState=false则所有控件的重新创建(?我的理解。也就是全部初始化。但是页面此时的IsPostBack=true)
有一个相当好的例子,很直观的看到viewstate的作用。
<
Script runat
=
"
server
"
>
Sub Page_Load
If not IsPostBack Then
Button1.Text="Hello"
End If
End Sub
</ Script >
< HTML >
< HEAD >
< title > ViewState </ title >
</ HEAD >
< body >
< form runat = " server " >
< asp:Label ID = " lblMessage " Runat = " server " Text = " 123 " EnableViewState = " false " /> < br >
< asp:Button Runat = " server " id = " Button1 " Text = " submit " />
</ form >
</ body >
</ HTML >
Sub Page_Load
If not IsPostBack Then
Button1.Text="Hello"
End If
End Sub
</ Script >
< HTML >
< HEAD >
< title > ViewState </ title >
</ HEAD >
< body >
< form runat = " server " >
< asp:Label ID = " lblMessage " Runat = " server " Text = " 123 " EnableViewState = " false " /> < br >
< asp:Button Runat = " server " id = " Button1 " Text = " submit " />
</ form >
</ body >
</ HTML >
运行结果:
第一次 Label显示结果为:Hello (page_load的结果)
第二次Label显示结果为:123(viewstate被禁用的结果)如果Label中的EnableViewState属性为True.则Label
结果依然是Hello.
由此可以看出ViewState的作用是:在两次页面提交之间保存各个控件的值,在需要时调用 出。而如果服务器返回改变
了控件值,以返回的
为准。否则,以ViewState为准。如ViewState被禁用,则重新加载控件各个属性。
PS:如果yong vs.net请吧<script>中代码放到页面后台的aspx.vb中的page_load
好像是以后台的为准
我也是初学者。汗……………………