ASP.NET - ViewState:空占位符生成视图状态

时间:2011-01-01 18:47:26

标签: asp.net viewstate asp.net-4.0

在我的网页上,我有PlaceHolder,而不是加载控件。

<asp:PlaceHolder ID="PlaceHolderStatMain" runat="server">
</asp:PlaceHolder>

我正在查看为页面生成的ViewState,它是以下内容:

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJLTg1NDkyNTUzD2QWAgIDD2QWAgIND2QWAmYPZBYCAgEPZBYCZg9kFgJmD2QWBmYPFQEYL3N0YXRfc3RhZGl1bS9sZWFndWVfV0VGZAIBDxUBGC9zdGF0X3N0YWRpdW0vbGVhZ3VlX0VFRmQCAg8VARgvc3RhdF9zdGFkaXVtL2xlYWd1ZV9GQ1VkZEuSBUr5LFL6WfCehNBJgjrq0GzwWCWN2qlU70V7LAAb" />

当我将EnableViewState设置为false时:

<asp:PlaceHolder ID="PlaceHolderStatMain" runat="server" EnableViewState="false">
</asp:PlaceHolder>

观点状态内容显着下降:

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJLTg1NDkyNTUzZGTTn8Y28VwmpE/K7yPPkLFvhrqMdU8THijFW/BMFzk0tQ==" />

问题:如何删除'无用的'viewstate内容而不为占位符本身禁用viewstate(我希望其他控件加载到占位符中以具有viewstate)?

有可能吗?

欢迎任何想法!

P.S。我正在使用ASP.NET 4.0

1 个答案:

答案 0 :(得分:1)

在ASP.Net 4.0中,您可以使用ViewStateMode参数禁用页面的视图状态,并为需要它的控件启用它。 Label1将具有viewstate而Label2将不会,因为它从页面继承了Disabled状态。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"
    ViewStateMode="Disabled" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>View State Demo in ASP.NET 4.0</title>
</head>
<body>
   <form id="form1" runat="server">
     <div>
        <asp:Label ID="Label1" runat="server" Text="One" ViewStateMode="Enabled"></asp:Label><br />
        <asp:Label ID="Label2" runat="server" Text="Two"></asp:Label> <br /><br />      
        <asp:Button ID="Button1" runat="server" Text="PostBack" />
      </div>
    </form>
  </body>
</html>