2

私の 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 はクライアント側に隠しフィールドの形式でデータを保存するため、ユーザーごとに一意である必要があります。これについては正しいです。

4

3 に答える 3

2

ViewState はデータをクライアント側に保存するので安全です。

于 2012-12-26T09:24:27.917 に答える
1

はい、クライアント側にデータを保存するためです。つまり、ユーザーが自分のマシンで表示しているページです。

したがって、同じページの別のバージョン (ビューステート データの意味で) が表示され、別のバージョンが表示されます。

于 2012-12-26T09:28:07.897 に答える
1

ViewState は、コントロールの状態を表す暗号化された文字列であり、ページ レベルにあります。

これは、非表示の入力フィールドを持つページごとにレンダリングされます。

 <input type="hidden" id="__ViewState" value="uxudhk.." />

異なるユーザーによって要求された各ページには、ページ内に異なる非表示フィールドがあります。したがって、これは常に安全です。ViewState が変更または変更された場合、InValid ViewState のようなサーバー側のエラーが発生します。

于 2012-12-26T09:34:11.677 に答える