去除前台生成隐藏的的VIEWSTATE,不会影响机能,使得页面提交更快。

来源:互联网 发布:国家电网公司 知乎 编辑:程序博客网 时间:2024/04/30 05:32

用后台代码来控制前台生成的VIEWSTATE,一般你的页面中数据量大,在页面前台生成一个VIEWSTATE就很大,例如:<input type="hidden" name="__VIEWSTATE" value="dasfasfkadusfiwe hfihlasdjfkdlashfjklhasdjfklhasdlkdfjasklhfkladhklhasdfhiuwefyworywuiryuqrq" />

那么你在提交的时候就很慢,如果在后台取读就好了,下面的方法就是,把前台生成的隐藏VIEWSATE消除,只是在后台保存,以下我是用SESSION保存的,当然SESSION有它自己的缺点,我就不说了,下面的方法只是一个参考.

如果.NET版本是1.0的话,你在前台要自己加<input type="hidden" name="__VIEWSTATE" value="" />,高版本的话,就用不着了.

HTML:

<HTML>
 <HEAD>
  <title>WebForm5</title>
  <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
  <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
  <meta name="vs_defaultClientScript" content="JavaScript">
  <meta name="vs_targetSchema" content="
http://schemas.microsoft.com/intellisense/ie5">
 </HEAD>
 <body MS_POSITIONING="GridLayout">
  <form id="Form1" method="post" runat="server">
   <input type =hidden name="hideViewstateID" value="<%=h%>">
   <asp:Button id="Button1" style="Z-INDEX: 101; LEFT: 35px; POSITION: absolute; TOP: 90px" runat="server"
    Text="Button"></asp:Button>
  </form>
 </body>
</HTML>

.VB:

  Public h As String

    Protected Overrides Function LoadPageStateFromPersistenceMedium() As Object
        Dim str As String
        str = Request.Form("hideViewstateID") & ""
        Return Session(h)
    End Function

    Protected Overrides Sub SavePageStateToPersistenceMedium(ByVal viewState As Object)
        If Not IsPostBack Then
            h = Format(Now, "yyyyMMddff")
        End If
        Session(h) = viewState
    End Sub