ASP.NET - ViewState: пустой заполнитель создает состояние просмотра - PullRequest
1 голос
/ 01 января 2011

На моей веб-странице у меня есть 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)?

Возможно ли это вообще?

Любые мысли приветствуются!

PS Я использую ASP.NET4,0

1 Ответ

1 голос
/ 01 января 2011

В 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>
...