Search code examples
asp.netvb.netwebformsasp.net-3.5viewstate

Cannot remove viewstate hidden field


I have a massive viewstate hidden field that is causing my application to be unworkable. I have tried:

  • EnableViewState="false" on every control
  • EnableViewState="false" in page directive
  • Page.EnableViewState = false in Page_Init
  • <pages enableViewState="false" /> in web.config

The page causing the issue has a single GridView which I want to render once only, so I don't ever need the viewstate.

I examined the hidden field using this tool, and there is apparently hardly any info in it (since I disabled the property in every control probably). For some reason though, the page insists on including a hidden field that is thousands and thousands of lines long.

How can I get rid of this field (or reduce it to a usable size) for good?


Here is an exert from the offending GridView:

<asp:GridView ID="MyGrid" runat="server" AutoGenerateColumns="False" 
      EnableModelValidation="True" EnableViewState="False" 
      CssClass="my-report">
      <Columns>
          <asp:TemplateField>
              <HeaderTemplate>
                <span title='title' class="abbr">My ID</span>
              </HeaderTemplate>
              <ItemTemplate>
                <%# Eval("my_id") %>
              </ItemTemplate>
          </asp:TemplateField>
          <asp:TemplateField>
              <HeaderTemplate>
                <span title='title2' class="abbr">Second col heading</span>
              </HeaderTemplate>
              <ItemTemplate>
                  <asp:ListView ID="MyListView" runat="server" EnableViewState="False">
                     <LayoutTemplate>
                        <ul>
                            <asp:PlaceHolder runat="server" ID="itemPlaceHolder" EnableViewState="False" />
                        </ul>
                     </LayoutTemplate>
                     <ItemTemplate>
                            <li><%# Eval("field_2")%></li>
                     </ItemTemplate>
                   </asp:ListView>
              </ItemTemplate>
          </asp:TemplateField>
      </Columns>
  </asp:GridView>

Solution

  • In case anyone has a similar problem, it was occuring because I had a ListView inside each row of the grid. I replaced the ListView with a Repeater and the viewstate is no longer a problem.