Asp.net 无法删除viewstate隐藏字段
我有一个巨大的viewstate隐藏字段,导致我的应用程序无法运行。我试过:Asp.net 无法删除viewstate隐藏字段,asp.net,vb.net,webforms,asp.net-3.5,viewstate,Asp.net,Vb.net,Webforms,Asp.net 3.5,Viewstate,我有一个巨大的viewstate隐藏字段,导致我的应用程序无法运行。我试过: 在每个控件上启用ViewState=“false” 页面指令中的EnableViewState=“false” Page.EnableViewState=false web.config中的 导致问题的页面有一个GridView,我只想呈现一次,所以我永远不需要viewstate 我使用检查了隐藏字段,其中显然几乎没有任何信息(因为我可能在每个控件中禁用了属性)。但出于某种原因,该页面坚持包含一个数千行长的隐藏字段
在每个控件上启用ViewState=“false”
- 页面指令中的
EnableViewState=“false”
Page.EnableViewState=false
- web.config中的
下面是一个令人不快的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>
我的身份证
第二列标题
您在页面上看到的隐藏字段不仅用于ViewState,还包含ControlState。没有办法禁用控件状态,因此您需要找到一种方法来适应它。网格显示了多少项
作为最后一个选项,您可以考虑压缩生成的VIEWSTATE字段.< /P>
您有一篇MSDN文章解释了ControlState的工作原理如果您的
GridView
是非交互式的(即,它不包含任何回发的子控件),那么您可以通过等待调用页面的Render
方法来绑定网格,从而减小视图状态的大小:
Protected Overrides Sub Render(writer As HtmlTextWriter)
MyGrid.DataSource = ...
MyGrid.DataBind()
MyBase.Render(writer)
End Sub
如果有人有类似的问题,那是因为我在网格的每一行中都有一个ListView。我用中继器替换了ListView,viewstate不再是问题。另一个选项是使用Flesk.viewstate 它可以将viewstate放在文件上、压缩它、会话等 正如其他人所说,在ASPNET中,有时不可避免地要使用ViewState
这就是为什么您最好的选择是移动到MVC:)您是否尝试过在页面的呈现事件中将其剥离出来@我还没有诉诸于此,这似乎是一个巨大的混乱。这篇文章的作者说“这样做的开销几乎肯定会比任何可能的好处都要大”,我不得不同意:(:)是的,你的选择非常有限,这是ASP.NET的本质。这就是为什么我成了MVC的忠实粉丝,它是一个功能强大的框架,提供了轻量级的渲染,没有臃肿的标记,只有你需要的。网格显示了很多项目,问题越严重。这似乎是因为我在每行的最后一个单元格中使用了ListView。