我有一個巨大的viewstate隱藏字段,導致我的應用程序無法工作。我曾嘗試:無法刪除視圖狀態隱藏字段
EnableViewState="false"
在頁面指令中的每個控制EnableViewState="false"
Page.EnableViewState = false
在Page_Init
<pages enableViewState="false" /> in web.config
造成問題的頁面有一個單一的GridView,我想只渲染一次,所以我不需要視圖狀態。
我使用this tool檢查了隱藏字段,顯然幾乎沒有任何信息(因爲我可能禁用了每個控件的屬性)。不過,由於某種原因,該網頁堅持包含一條長達數千和數千行的隱藏字段。
我該如何擺脫這個領域(或減少到一個可用的大小)爲好?
這裏是違法的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>
你有沒有嘗試在頁面的渲染事件剝離出來? http://stackoverflow.com/questions/2432972/completely-remove-viewstate-for-specific-pages – KodeKreachor 2012-03-27 01:55:46
@KodeKreachor我還沒有訴諸於(尚未),它似乎是一個巨大的kludge。這個作者說:「這樣做的開銷幾乎肯定會超過任何可能的好處,儘管」_我將不得不同意:( – Flash 2012-03-27 01:58:49
:)是的,你的選擇是相當有限的,這是ASP.NET的本質。這就是爲什麼我成爲MVC的忠實粉絲,它是一個強大的框架,它提供了輕量級的渲染,沒有臃腫的標記,只有你需要。 – KodeKreachor 2012-03-27 02:05:10