在我的网页上,我有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
答案 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>