Control.SaveControlState 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
儲存頁面回傳至伺服器以來,所發生的任何伺服器控制項狀態變更。
protected public:
virtual System::Object ^ SaveControlState();
protected internal virtual object SaveControlState ();
abstract member SaveControlState : unit -> obj
override this.SaveControlState : unit -> obj
Protected Friend Overridable Function SaveControlState () As Object
傳回
傳回伺服器控制項目前的狀態。 如果沒有與控制項關聯的狀態,則這個方法會傳回 null
。
範例
下列程式代碼範例會 SaveControlState 覆寫自定義 ASP.NET 控件中的方法。 叫用這個方法時,它會判斷內部屬性 currentIndex
是否設定為非預設值,如果是,則會將值儲存至控制狀態。
系統會 OnInit 覆寫 方法,以呼叫 RegisterRequiresControlState 上的 Page 方法,以指出自定義控件使用控件狀態。
public class Sample : Control {
private int currentIndex = 0;
protected override void OnInit(EventArgs e) {
Page.RegisterRequiresControlState(this);
base.OnInit(e);
}
protected override object SaveControlState() {
return currentIndex != 0 ? (object)currentIndex : null;
}
protected override void LoadControlState(object state) {
if (state != null) {
currentIndex = (int)state;
}
}
}
Class Sample
Inherits Control
Dim currentIndex As Integer
Protected Overrides Sub OnInit(ByVal e As EventArgs)
Page.RegisterRequiresControlState(Me)
currentIndex = 0
MyBase.OnInit(e)
End Sub
Protected Overrides Function SaveControlState() As Object
If currentIndex <> 0 Then
Return CType(currentIndex, Object)
Else
Return Nothing
End If
End Function
Protected Overrides Sub LoadControlState(ByVal state As Object)
If (state <> Nothing) Then
currentIndex = CType(state, Integer)
End If
End Sub
End Class
備註
SaveControlState使用方法來儲存特定控制項作業所需的狀態資訊。 此控件狀態數據會與控件的檢視狀態數據分開儲存。
使用控件狀態的自定義控件必須先在 上Page呼叫 方法,RegisterRequiresControlState才能儲存控件狀態。
給繼承者的注意事項
儲存控件狀態時,字串物件會以儲存在 HTML HIDDEN
元素中的變數的形式傳回給用戶端。 覆寫這個方法,以擷取控件中要使用的狀態資訊。
控制狀態適用於少量的重要數據,例如頁面索引或關鍵詞。 對大量數據使用控制狀態可能會對頁面效能造成負面影響。 如需詳細資訊,請參閱 ASP.NET 狀態管理概觀。