IPersonalizable.Save メソッドとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > IPersonalizable.Save メソッドの意味・解説 

IPersonalizable.Save メソッド

メモ : このメソッドは、.NET Framework version 2.0新しく追加されたものです。

コントロールPersonalizationDictionary オブジェクトカスタム プロパティ内部状態情報保存します

名前空間: System.Web.UI.WebControls.WebParts
アセンブリ: System.Web (system.web.dll 内)
構文構文

Sub Save ( _
    state As PersonalizationDictionary _
)
Dim instance As IPersonalizable
Dim state As PersonalizationDictionary

instance.Save(state)
void Save (
    PersonalizationDictionary state
)
void Save (
    PersonalizationDictionary^ state
)
void Save (
    PersonalizationDictionary state
)
function Save (
    state : PersonalizationDictionary
)

パラメータ

state

基になるデータ ストアから読み込まれた、スコープ指定されカスタム データ格納している PersonalizationDictionary。

解説解説

サーバー コントロールは、コントロール自体カスタム プロパティと、PersonalizationDictionarystate パラメータ指定した内部状態情報格納できます。この情報は、名前と値の一連のペアとして格納されます。コントロールは、それ以降Load メソッド通じてそのコントロール行われる呼び出しで、そのコントロール認識できる名前と値のペア使用します

コントロールでは、関連する WebPartManager コントロール参照しPersonalizationScope オブジェクトチェックして現在のスコープ確認できますカスタム状態情報は、現在のスコープに対して適切である必要がありますPersonalizationDictionary オブジェクト追加されるそれぞれの PersonalizationEntry 値は、適切なスコープ値に関連付けられている必要があります。これは、パーソナル化インフラストラクチャは、Load メソッドカスタム データを渡す前に、このスコープ値に基づいてスコープが Shared のカスタム データスコープUserカスタム データマージするためです。

Web パーツ標準ASP.NET 実装使用する場合コントロールでは、状態のディクショナリに格納されているオブジェクトASP.NET の ObjectStateFormatter クラスによってシリアル化できるようにしておく必要があります実際には、これは次のことを意味します

メモ重要 :

App_Code ディレクトリ定義されクラス基づいて型を追加して既定バイナリ シリアル化機構依存しないください。App_Code ベースコンポーネントは、アセンブリ名ランダムな時点変更することがあるため、一貫してバイナリ シリアル化できません。

使用例使用例

カスタム WebPart コントロールSave メソッド実装する方法次のコード例示します。この例の実行必要なコード全体については、IPersonalizable クラス概要で「例」を参照してください

Imports System
Imports System.Collections
Imports System.ComponentModel
Imports System.Diagnostics
Imports System.Drawing
Imports System.Web
Imports System.Web.UI
Imports System.Security.Permissions
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts

Namespace Samples.AspNet.VB.Controls

  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  Public Class UrlListWebPart
      Inherits WebPart
      Implements IPersonalizable
      Private _sharedUrls As ArrayList
      Private _userUrls As ArrayList
      Private _listDirty As Boolean

      Private _nameTextBox As TextBox
      Private _urlTextBox As TextBox
      Private _addButton As Button
      Private _list As BulletedList


      Protected Overrides Sub
 CreateChildControls()
          Dim nameLabel As New
 Label()
          Dim urlLabel As New
 Label()
          Dim breakLiteral1 As New
 LiteralControl("<br />")
          Dim breakLiteral2 As New
 LiteralControl("<br />")
          Dim breakLiteral3 As New
 LiteralControl("<br />")

          _nameTextBox = New TextBox()
          _urlTextBox = New TextBox()
          _addButton = New Button()
          _list = New BulletedList()

          nameLabel.Text = "Name: "
          urlLabel.Text = "URL: "
          _nameTextBox.ID = "nameTextBox"
          _urlTextBox.ID = "urlTextBox"
          _addButton.Text = "Add"
          _addButton.ID = "addButton"
          AddHandler _addButton.Click, AddressOf
 Me.OnClickAddButton
          _list.DisplayMode = BulletedListDisplayMode.HyperLink
          _list.ID = "list"

          Controls.Add(nameLabel)
          Controls.Add(_nameTextBox)
          Controls.Add(breakLiteral1)

          Controls.Add(urlLabel)
          Controls.Add(_urlTextBox)
          Controls.Add(breakLiteral2)

          Controls.Add(_addButton)
          Controls.Add(breakLiteral3)

          Controls.Add(_list)

      End Sub 'CreateChildControls


      Private Sub OnClickAddButton(ByVal
 sender As Object, ByVal
 e As EventArgs)
          Dim name As String
 = _nameTextBox.Text.Trim()
          Dim url As String
 = _urlTextBox.Text.Trim()

          Dim p As New Pair(name,
 url)
          If WebPartManager.Personalization.Scope = PersonalizationScope.Shared
 Then
              If _sharedUrls Is Nothing
 Then
                  _sharedUrls = New ArrayList()
              End If
              _sharedUrls.Add(p)
          Else
              If _userUrls Is Nothing
 Then
                  _userUrls = New ArrayList()
              End If
              _userUrls.Add(p)
          End If

          OnUrlAdded()

      End Sub 'OnClickAddButton


      Protected Overridable Sub
 OnUrlAdded()
          _listDirty = True
          ChildControlsCreated = False

      End Sub 'OnUrlAdded


      Protected Overrides Sub
 RenderContents(ByVal writer As HtmlTextWriter)
          If Not (_sharedUrls Is
 Nothing) Then
              Dim p As Pair
              For Each p In
 _sharedUrls
                  _list.Items.Add(New ListItem(CStr(p.First),
 CStr(p.Second)))
              Next p
          End If
          If Not (_userUrls Is
 Nothing) Then
              Dim p As Pair
              For Each p In
 _userUrls
                  _list.Items.Add(New ListItem(CStr(p.First),
 CStr(p.Second)))
              Next p
          End If

          MyBase.RenderContents(writer)

      End Sub 'RenderContents


      Public Overridable ReadOnly
 Property IsDirty() As Boolean
 _
        Implements IPersonalizable.IsDirty
          Get
              Return _listDirty
          End Get
      End Property

      Public Overridable Shadows
 Sub Load(ByVal state As
 PersonalizationDictionary) _
        Implements IPersonalizable.Load
          If Not (state Is
 Nothing) Then
              Dim sharedUrlsEntry As PersonalizationEntry
 = state("sharedUrls")
              If Not (sharedUrlsEntry Is
 Nothing) Then
                  _sharedUrls = CType(sharedUrlsEntry.Value, ArrayList)
              End If

              Dim userUrlsEntry As PersonalizationEntry
 = state("userUrls")
              If Not (userUrlsEntry Is
 Nothing) Then
                  _userUrls = CType(userUrlsEntry.Value, ArrayList)
              End If
          End If

      End Sub 'Load

      Public Overridable Sub
 Save(ByVal state As PersonalizationDictionary)
 _
        Implements IPersonalizable.Save
          If Not (_sharedUrls Is
 Nothing) AndAlso _sharedUrls.Count <>
 0 Then
              state("sharedUrls") = New
 PersonalizationEntry(_sharedUrls, PersonalizationScope.Shared)
          End If
          If Not (_userUrls Is
 Nothing) AndAlso _userUrls.Count <>
 0 Then
              state("userUrls") = New
 PersonalizationEntry(_userUrls, PersonalizationScope.User)
          End If

      End Sub
  End Class


End Namespace
namespace Samples.AspNet.CS.Controls
{

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Diagnostics;
    using System.Drawing;
    using System.Web;
    using System.Web.UI;
    using System.Security.Permissions;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;

    [AspNetHostingPermission(SecurityAction.Demand,
      Level = AspNetHostingPermissionLevel.Minimal)]
    [AspNetHostingPermission(SecurityAction.InheritanceDemand,
      Level = AspNetHostingPermissionLevel.Minimal)]
    public class UrlListWebPart : WebPart,
 IPersonalizable
    {
        private ArrayList _sharedUrls;
        private ArrayList _userUrls;
        private bool _listDirty;

        private TextBox _nameTextBox;
        private TextBox _urlTextBox;
        private Button _addButton;
        private BulletedList _list;

        protected override void CreateChildControls()
        {
            Label nameLabel = new Label();
            Label urlLabel = new Label();
            LiteralControl breakLiteral1 = new LiteralControl("<br
 />");
            LiteralControl breakLiteral2 = new LiteralControl("<br
 />");
            LiteralControl breakLiteral3 = new LiteralControl("<br
 />");

            _nameTextBox = new TextBox();
            _urlTextBox = new TextBox();
            _addButton = new Button();
            _list = new BulletedList();

            nameLabel.Text = "Name: ";
            urlLabel.Text = "URL: ";
            _nameTextBox.ID = "nameTextBox";
            _urlTextBox.ID = "urlTextBox";
            _addButton.Text = "Add";
            _addButton.ID = "addButton";
            _addButton.Click += new EventHandler(this.OnClickAddButton);
            _list.DisplayMode = BulletedListDisplayMode.HyperLink;
            _list.ID = "list";

            Controls.Add(nameLabel);
            Controls.Add(_nameTextBox);
            Controls.Add(breakLiteral1);

            Controls.Add(urlLabel);
            Controls.Add(_urlTextBox);
            Controls.Add(breakLiteral2);

            Controls.Add(_addButton);
            Controls.Add(breakLiteral3);

            Controls.Add(_list);
        }

        private void OnClickAddButton(object
 sender, EventArgs e)
        {
            string name = _nameTextBox.Text.Trim();
            string url = _urlTextBox.Text.Trim();

            Pair p = new Pair(name, url);
            if (WebPartManager.Personalization.Scope == PersonalizationScope.Shared)
            {
                if (_sharedUrls == null)
                {
                    _sharedUrls = new ArrayList();
                }
                _sharedUrls.Add(p);
            }
            else
            {
                if (_userUrls == null)
                {
                    _userUrls = new ArrayList();
                }
                _userUrls.Add(p);
            }

            OnUrlAdded();
        }

        protected virtual void OnUrlAdded()
        {
            _listDirty = true;
            ChildControlsCreated = false;
        }

        protected override void RenderContents(HtmlTextWriter
 writer)
        {
            if (_sharedUrls != null)
            {
                foreach (Pair p in _sharedUrls)
                {
                    _list.Items.Add(new ListItem((string)p.First,
 (string)p.Second));
                }
            }
            if (_userUrls != null)
            {
                foreach (Pair p in _userUrls)
                {
                    _list.Items.Add(new ListItem((string)p.First,
 (string)p.Second));
                }
            }

            base.RenderContents(writer);
        }

        public virtual bool IsDirty
        {
            get
            {
                return _listDirty;
            }
        }
        public new virtual void
 Load(PersonalizationDictionary state)
        {
            if (state != null)
            {
                PersonalizationEntry sharedUrlsEntry = state["sharedUrls"];
                if (sharedUrlsEntry != null)
                {
                    _sharedUrls = (ArrayList)sharedUrlsEntry.Value;
                }

                PersonalizationEntry userUrlsEntry = state["userUrls"];
                if (userUrlsEntry != null)
                {
                    _userUrls = (ArrayList)userUrlsEntry.Value;
                }
            }
        }

        public virtual void Save(PersonalizationDictionary
 state)
        {
            if ((_sharedUrls != null) &&
 (_sharedUrls.Count != 0))
            {
                state["sharedUrls"] = new PersonalizationEntry(_sharedUrls,
 PersonalizationScope.Shared);
            }
            if ((_userUrls != null) &&
 (_userUrls.Count != 0))
            {
                state["userUrls"] = new PersonalizationEntry(_userUrls,
 PersonalizationScope.User);
            }
        }
    }
}
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
IPersonalizable インターフェイス
IPersonalizable メンバ
System.Web.UI.WebControls.WebParts 名前空間



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「IPersonalizable.Save メソッド」の関連用語

IPersonalizable.Save メソッドのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



IPersonalizable.Save メソッドのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS