私の ASP.Net アプリでは、viewstate を使用してグリッドのデータを保存します。以下に示すように、viewstate オブジェクトを作成するために共通クラスを使用します。
public static PageViewState CurrentViewState
{
get
{
if (_app == null)
{
Initialize();
}
return _app;
}
}
/// <summary>
/// Creates new object for singleton class
/// </summary>
private static void Initialize()
{
PageViewState _viewstate = new PageViewState();
_app = _viewstate;
}
/// <summary>
/// Returns viewstate for specified page name
/// </summary>
/// <param name="_page">string : Name of the page</param>
/// <returns></returns>
public object this[string _page]
{
get
{
if (ViewState[_page] != null)
return ViewState[_page];
else
return null;
}
set
{
ViewState[_page] = value;
}
}
静的プロパティを使用しています。複数のユーザーが aspx.cs でこれにアクセスしても安全ですか。
Datatable _dtable = (Datatable)PageViewState.CurrentViewState["MyPage"];
ViewState はクライアント側に隠しフィールドの形式でデータを保存するため、ユーザーごとに一意である必要があります。これについては正しいです。