2010-08-05 4 views
1

Что делает EnableViewState в HyperLink или означает?Что делает EnableViewState для HyperLink?

<asp:HyperLink ID="RegisterHyperLink" runat="server" EnableViewState="false">Register</asp:HyperLink> 

Что это значит? и что он будет делать, если я верну его. Благодаря! Я посмотрел, но определение было не просто.

ответ

4

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.

+0

Nice link !! Я поделюсь этим с моими коллегами. – Rabid

+0

Очень хорошее объяснение, также OP должен отметить, что это принятый ответ. – Justin

+0

Вы забыли опцию C, которая заключается в том, чтобы установить значения на каждый обратный вызов, просто перемещая этот код извне блока If. –

1

Это означает, что вы можете установить свойство NavigateUrl во время запроса страницы (т. Е. В коде позади, а не как атрибут объявления шаблона элемента управления), это свойство будет сохраняться в следующих обратных передачах. Если вы отключите свойство EnableViewState, назначьте NavigateUrl, а затем по следующему запросу обратной передачи, свойство NavigateUrl будет ничем.

Я считаю, что это относится и к другим свойствам управления, например Text, Target и ImageUrl.

Значение по умолчанию: true. Свойство страницы EnableViewState имеет прецедент и будет переопределять свойство на любых дочерних элементах управления.

Смежные вопросы