共用方式為


支援私用檢視狀態

更新:2007 年 11 月

除了應用程式檢視狀態,您還可以維護 ASP.NET Mobile 控制項的私用狀態資訊。當行動控制項維護內部資訊時,建議您不要依靠應用程式設定來保存這類資訊。而是撰寫應用程式,使其使用私用檢視狀態。私用檢視狀態的範例包括目前頁面上作用中的表單、表單的重新編頁資訊,以及控制項配置器 (Adapter) 所做的裝置特定決策。

私用檢視狀態在許多方面都與應用程式檢視狀態不同。它是以呈現的頁面寫出,而不是儲存在工作階段 (Session) 狀態中。應用程式也無法停用它。而且因為所有的私用狀態都是動態產生,所以應用程式檢視狀態所使用的追蹤語意 (Semantics) 並不會套用到私用檢視狀態。

若要使用私用檢視狀態,控制項必須覆寫 LoadPrivateViewStateSavePrivateViewState 方法。這些方法與 LoadViewStateSaveViewState 方法的運作方式相同。請勿將控制項撰寫成使用應用程式檢視狀態機制 (例如 ViewState 狀態屬性) 來儲存屬於私用檢視狀態之一部分的設定。

控制項配接器也可以加入私用檢視狀態。控制項配接器可以實作 LoadAdapterStateSaveAdapterState 方法。這些方法是分別從 LoadPrivateViewStateSavePrivateViewState 方法的 MobileControl 基底類别 (Base Class) 實作 (Implementation) 呼叫。

因為私用檢視狀態是寫入至用戶端,而且不受應用程式的控制,所以您的行動控制項一定會盡量有效率地使用私用檢視狀態。下列範例說明最佳化控制項實作的技巧。

protected override Object SavePrivateViewState()
{
    Object baseState = base.SavePrivateViewState;
    Object myState = GetMyState();

    if (baseState == null && myState == null)
        return null;
    else if (myState == null)
        return baseState;
    else
        return new Object[] { baseState, myState };
}

protected override void LoadPrivateViewState(Object state)
{
    if (state is Object[])
    {
        Object[] arr = (Object [])state;
        base.LoadPrivateViewState(arr[0]);
        LoadMyState(arr[1]);
    }
    else if (state != null)
        base.LoadPrivateViewState(state);
}

如果控制項沒有任何要儲存的私用檢視狀態,其便會從 SavePrivateViewState 方法傳回 null。請注意,您不需要使用私用檢視狀態來儲存已設定為其預設值的屬性。

請參閱

其他資源

支援檢視狀態