HyperLink上的EnableViewState具有什麼功能?HyperLink上的EnableViewState的功能是什麼意思?
<asp:HyperLink ID="RegisterHyperLink" runat="server" EnableViewState="false">Register</asp:HyperLink>
這是什麼意思?如果我將它設置爲true,它會做什麼。謝謝!我查了一下,但定義並不簡單。
HyperLink上的EnableViewState具有什麼功能?HyperLink上的EnableViewState的功能是什麼意思?
<asp:HyperLink ID="RegisterHyperLink" runat="server" EnableViewState="false">Register</asp:HyperLink>
這是什麼意思?如果我將它設置爲true,它會做什麼。謝謝!我查了一下,但定義並不簡單。
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;
}
}
即使你僅在第一次加載時將HyperLink的ForeColor設置爲紅色,HyperLink在單擊執行回發的按鈕後仍然保持紅色。這是因爲ViewState存儲HyperLinks屬性的值,並在回發後重新創建它們。
如果您嘗試完全相同的事情,但在HyperLink上禁用了ViewState,當您單擊提交按鈕時,HyperLink將恢復爲其原始顏色。這是因爲視圖狀態不是「存儲」您將其設置爲紅色的事實。
在實際應用中可以正常禁用ViewState的,如果:
A)你的頁面不執行任何回發 B)您可以設置所有屬性聲明
如果你真的想了解我的ViewState」 d推薦閱讀TRULY Understanding ViewState。
這意味着您可以在頁面請求期間(即在代碼後面而不是控件模板聲明中的屬性)設置NavigateUrl
屬性,該屬性將在後續回發中保留。如果您禁用EnableViewState
屬性,請指定NavigateUrl
,然後在以下回發請求中,NavigateUrl
屬性將不起作用。
我相信這也適用於控件的其他屬性,如Text
,Target
和ImageUrl
。
默認值是true
。頁面的屬性先行,並將覆蓋任何子控件上的屬性。
不錯的鏈接!我會與同事分享。 – Rabid 2010-08-05 19:32:18
非常好的解釋,也OP應該標記這是一個被接受的答案。 – Justin 2010-08-05 19:47:24
您忘記了選項C,即只需從If塊外部移動該代碼即可在每次回發中設置值。 – 2010-08-05 21:13:12