This article was translated by machine. To view in the article in English, select the English check box. You can also display the English text in a popup window by moving the mouse pointer over the text.
الترجمة
الأصلي
This documentation is archived and is not being maintained.

IPersonalizable.Save أسلوب

Visual Studio 2010

Saves مخصص خصائص و internal الولاية معلومات في the عنصر تحكم's PersonalizationDictionary كائن.

مساحة الاسم:  System.Web.UI.WebControls.WebParts
التجميع:  System.Web (في System.Web.dll)

void Save(
	PersonalizationDictionary state
)

المعلمات

state
النوع: System.Web.UI.WebControls.WebParts.PersonalizationDictionary
A PersonalizationDictionary that يحتوي على مخصص scoped بيانات that was تم تحميله من the underlying بيانات store.

A عنصر تحكم الخادم can store its own مخصص خصائص و internal الولاية معلومات the PersonalizationDictionary specified في the state معلمة. The معلومات هو stored كـ a series of اسم/القيمة pairs. هو مسؤولية عنصر التحكم باستخدام زوج الاسم/القيمه التي يمكن التعرف عليه أثناء المكالمات اللاحقة التي تم إجراؤها على عنصر التحكم إلى Loadالأسلوب.

الرجوع عنصر تحكم المقترن به WebPartManagerالتحكم وفحص PersonalizationScopeالكائن إلى تحديد نطاق الحالي. مخصص يجب أن تكون معلومات الحالة المناسبة للنطاق الحالي. لاحظ أن كل PersonalizationEntryقيمة هو إضافة إلى PersonalizationDictionaryيجب أن يكون الكائن المرتبطة بالقيمة المناسبة للنطاق، لأنها تعتمد البنية التحتية لإضفاء الطابع الشخصي تشغيل th هو عند دمج Sharedو User-خاصة بيانات المخصصة قبل تمرير إلى Loadالأسلوب.

عند استخدام تطبيق ASP.NET القياسية من "أجزاء ويب"، عناصر التحكم يجب أن يتأكد من تسلسل الكائنات التي تم وضعها في قاموس الولاية بواسطة ASP.NET ObjectStateFormatterفئة. عمليا، هذا يعني ما يلي:

  • الأنواع الأولية لبرنامج.NET Framework وسلاسل ومبنية على مجموعة من برنامج.NET Framework أنواع مثل كـ صفائف، صفيف القوائم والجداول hكـh قواميس المختلط، يتم تلقائياً قابل للتسلسل.

  • أنواع Cusإلىm توفير الخاصة بهم TypeConverterفئات قادرة على تسلسل إلى وتعتبر إلغاء تسلسل من سلاسل قابل للتسلسل.

  • أنواع مخصصة يمكن أن يكون تسلسل بواسطة BinaryFormatterتعتبر فئة قابل للتسلسل.

ملاحظة هامةهام

عليك عدم إضافة أنواع استناداً إلى الفئات المعرفة في الدليل App_Code و ثم تستند إليه ثنائية السلسلة الافتراضية. يستند إلى App_Code artifacts غير قابل لشكل ثنائي-التسلسل السبب إلى قيامك أنه يمكن أن يكون لها أسماء التجميعات تم تغييره نقاط عشوائية في الوقت.

يوضح مثال التعليمة البرمجية التالية في تطبيق Saveالأسلوب في مخصص WebPartعنصر تحكم. For the كامل تعليمات برمجية مطلوب إلى تشغيل this مثال, see the مثال مقطع في the IPersonalizable فئة overview.


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);
            }
        }
    }
}


نظام التشغيل Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, الإصدار x64 من نظام التشغيل Windows XP Professional, Windows XP Starter Edition, Windows Server 2008, نظام التشغيل Windows Server 2003, نظام التشغيل Windows Server 2000 المزود بحزمة الخدمة SP4, نظام التشغيل Windows Millennium Edition, نظام التشغيل Windows 98

لا يدعم .NET Framework و .NET Compact Framework كافة الإصدارات الخاصة بكل نظام أساسي. للحصول على قائمة بالإصدارات المدعمة، راجع متطلبات النظام إطار عمل .NET.

.NET Framework

مدعوم في: 4, 3.5, 3.0, 2.0
إظهار: