ViewState используется для сохранения состояния свойств управления через обратную передачу. Отключение этого означает, что любые свойства, которые вы задали программным образом (в кодировке), не будут сохраняться на всех обратных страницах страницы. Однако, если вы объявите все значения декларативно (на вашей странице .aspx), то его отключение не будет иметь никакого значения.
Быстрый пример:
Допустим, вы это ASPX наценка с ViewState включен:
<form id="form1" runat="server">
<div>
<asp:HyperLink ID="RegisterHyperLink" runat="server" EnableViewState="true">Register</asp:HyperLink>
<br /><br />
<asp:Button ID="ButtonPostBack" runat="server" Text="Post Back" />
</div>
</form>
И вы делаете это в коде-за:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
RegisterHyperLink.ForeColor = System.Drawing.Color.Red;
}
}
Даже если вы только установите ForeColor HyperLink на красный цвет при первой загрузке, когда HyperLink останется красным после нажатия кнопки, которая выполняет обратную передачу. Это потому, что ViewState сохраняет значение свойств HyperLinks и воссоздает их после обратной передачи.
Если вы попробуете то же самое, но с отключенным ViewState в HyperLink, при нажатии кнопки отправки HyperLink вернется к исходному цвету. Это потому, что viewstate не «сохраняет» тот факт, что вы установили его как красный.
На практике обычно можно отключить ViewState, если:
A) Ваша страница не выполняет постбэков B) Вы можете установить все свойства декларативно
Если вы действительно хотите понять, ViewState I» d рекомендуем прочитать TRULY Understanding ViewState.
Nice link !! Я поделюсь этим с моими коллегами. – Rabid
Очень хорошее объяснение, также OP должен отметить, что это принятый ответ. – Justin
Вы забыли опцию C, которая заключается в том, чтобы установить значения на каждый обратный вызов, просто перемещая этот код извне блока If. –