WebPartManager.Personalization Property


The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Gets a reference to an object that contains personalization data for a Web page.

Namespace:   System.Web.UI.WebControls.WebParts
Assembly:  System.Web (in System.Web.dll)

public WebPartPersonalization Personalization { get; }

Property Value

Type: System.Web.UI.WebControls.WebParts.WebPartPersonalization

A WebPartPersonalization that contains personalization data.

The Personalization property provides a way to access the WebPartPersonalization object that is associated with a page through the WebPartManager control. Using this property, you can access the various members of the personalization object. For example, you can use the ToggleScope method to switch the page's personalization scope from shared to user scope, or vice versa. You can also find out the current personalization scope of the page, whether personalization is even enabled on the page, which provider is being used for the personalization data, and more.

Note that the data referenced by the Personalization property is only the page-level personalization data that is tracked by the WebPartManager control. Control-specific personalization data, such as the values of personalizable properties on WebPart controls, is not part of the Personalization property.


For more information on Web Parts personalization, see Web Parts Personalization Overview.

The following code example demonstrates how to use the Personalization property programmatically.

The following Web page allows a user to enter edit mode to edit certain aspects of the Calendar control. The Toggle Scope button switches the page to user or shared personalization scope. The Edit Mode and Browse Mode buttons each switch the page into the appropriate display mode. Notice that in the <script> tag section of the file, two of the methods that handle events use the Personalization property to access useful members of the underlying object. Specifically, these methods use the ToggleScope method and the Scope property on the object accessed through the Personalization property.

<%@ Page Language="c#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<script runat="server">

  protected void Button1_Click(object sender, EventArgs e)
    if ((mgr1.Personalization.Scope == PersonalizationScope.User)
      && (mgr1.Personalization.CanEnterSharedScope))
    else if (mgr1.Personalization.Scope ==
      // If the user cannot enter shared scope you may want
      // to notify them on the page.

  protected void Button2_Click(object sender, EventArgs e)
    mgr1.DisplayMode = WebPartManager.EditDisplayMode;

  protected void Button3_Click(object sender, EventArgs e)
    mgr1.DisplayMode = WebPartManager.BrowseDisplayMode;

  protected void Page_Load(object sender, EventArgs e)
    Label1.Text = "Scope is: "
      + mgr1.Personalization.Scope.ToString();

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>ASP.NET Example</title>
    <form id="form1" runat="server">
      <asp:WebPartManager ID="mgr1" runat="server" />
      <asp:WebPartZone ID="WebPartZone1" runat="server">
          <asp:Calendar ID="Calendar1" runat="server" />
      <asp:EditorZone ID="EditorZone1" runat="server">
          <asp:AppearanceEditorPart ID="AppearanceEditorPart1" 
            runat="server"  />
          <asp:BehaviorEditorPart ID="BehaviorEditorPart1" 
            runat="server" />
      <hr />
      <asp:Button ID="Button1" runat="server" Text="Toggle Scope" OnClick="Button1_Click"  />
      <asp:Button ID="Button2" runat="server" Text="Edit Mode" OnClick="Button2_Click" />
      <asp:Button ID="Button3" runat="server" Text="Browse Mode" OnClick="Button3_Click" />
      <br />
      <asp:Label ID="Label1" runat="server" Text="" />

For the code example to run, you also must enable a user or users to personalize pages in shared scope. Add an entry to the Web.config file, within the <system.web> section, that looks like the following markup.

        users="[Replace the text and brackets with a user name or 
        verbs="enterSharedScope"  />

After you load the page in a browser, click the Toggle Scope button, and notice that the page now says the scope is shared. Click Edit Mode to change the display mode, click the verbs menu on the visible control, and select Edit from the menu. Notice that the user interface (UI) for both editing controls appears. Now click Browse Mode to return to normal browsing. If the page says it is in shared scope, click Toggle Scope again to ensure the page is in user scope. Next, follow the same steps to edit the control again, but notice that now in the editing UI, the BehaviorEditorPart control does not appear. That is because this control only works when the page is in shared personalization scope.

.NET Framework
Available since 2.0
Return to top