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 狀態管理概觀。