Freigeben über


WebPartPersonalization Klasse

Definition

Implementiert Personalisierungsoperationen auf niedriger Ebene.

public ref class WebPartPersonalization
[System.ComponentModel.TypeConverter(typeof(System.Web.UI.WebControls.EmptyStringExpandableObjectConverter))]
public class WebPartPersonalization
[<System.ComponentModel.TypeConverter(typeof(System.Web.UI.WebControls.EmptyStringExpandableObjectConverter))>]
type WebPartPersonalization = class
Public Class WebPartPersonalization
Vererbung
WebPartPersonalization
Attribute

Beispiele

Das folgende Codebeispiel zeigt, wie die WebPartPersonalization -Klasse verwendet wird, sowie ein Beispiel dafür, wie sich der Personalisierungsbereich auf die Ergebnisse personalisierter Eigenschaften auswirkt. Dieses Beispiel enthält fünf Dateien:

  • Eine .aspx Seite, die deklarativ zwei Webpartzonen mit jeweils einem -Steuerelement erstellt.

  • Ein Benutzersteuerelement namens Color.ascx , das es einem Benutzer ermöglicht, eine personalisierte Eigenschaft zu ändern, die eine Textfeld-Hintergrundfarbe basierend auf den Autorisierungsrechten des Benutzers anwendet, um Zustandsinformationen zu ändern und freigegebenen Bereich zu betreten.

  • Ein Benutzersteuerelement namens Persmode.ascx , das angibt, was der aktuelle Seitenbereich ist und welche Rechte der aktuelle Benutzer hat, um freigegebenen Bereich einzugeben oder Daten zu ändern. Es bietet auch zwei Schaltflächen: eine zum Ändern des Bereichs und eine zum Zurücksetzen der aktuellen Benutzerpersonalisierungsinformationen.

  • Ein Anmeldesteuerelement, das zum Autorisieren von Benutzern verwendet wird.

  • Eine Web.config Datei mit einem Abschnitt, der ein Beispiel für die Autorisierung eines Benutzers zum Ändern des Personalisierungszustands und zum Eingeben des freigegebenen Bereichs enthält.

Der folgende Code erstellt eine ASPX-Seite mit einer WebPartManager und zwei Webpartzonen und zeigt die Color.ascx Steuerelemente und Persmode.ascx an. Die Seite lädt eine Anmeldeseite, die zum Abrufen der aktuellen Benutzerinformationen verwendet wird. Verwenden Sie das ASP.NET-Websiteverwaltungstool in Microsoft Visual Studio 2005, um Benutzer für den Zugriff auf die Seite zu erstellen. In der datei Web.config finden Sie ein Beispiel für einen Benutzer, dem die Autorisierung in der Konfigurationsdatei gewährt wurde, um den Bereich zu ändern und Zustandsinformationen zu ändern.

<%@ Page Language="C#" %>
<%@ Register TagPrefix="control"  TagName="colorcontrol" Src="~/color.ascx"%>
<%@Register TagPrefix="pmode" TagName="persmode" Src="~/persMode.ascx" %>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
        <!-- Create Web Part manager and zone for the color user control. -->
        <asp:WebPartManager ID="WebPartManager1" runat="server"></asp:WebPartManager>
            <asp:WebPartZone ID="WebPartZone1" runat="server" HeaderText="Color Change Zone">
                <ZoneTemplate>
                <!-- Note that the control is Shared since it is declared on the page. -->
                    <control:colorcontrol id="color1" title="Color Control" runat="server" />
                </ZoneTemplate>
            </asp:WebPartZone>
        
        <br />
            <!-- Create Web Part zone for the personalization mode user control. -->
            <asp:WebPartZone ID="WebPartZone2" runat="server" HeaderText="Scope Change Zone" Height="109px">
                <ZoneTemplate>
                    <pmode:persmode  ID="Persmode1" runat="server" title="Scope Tool"/>
                </ZoneTemplate>
            </asp:WebPartZone>
   
    </form>
</body>
</html>
<%@ Page Language="C#" %>
<%@ Register TagPrefix="control"  TagName="colorcontrol" Src="~/color.ascx"%>
<%@Register TagPrefix="pmode" TagName="persmode" Src="~/persMode.ascx" %>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
        <!-- Create Web Part manager and zone for the color user control. -->
        <asp:WebPartManager ID="WebPartManager1" runat="server"></asp:WebPartManager>
            <asp:WebPartZone ID="WebPartZone1" runat="server" HeaderText="Color Change Zone">
                <ZoneTemplate>
                <!-- Note that the control is Shared since it is declared on the page. -->
                    <control:colorcontrol id="color1" title="Color Control" runat="server" />
                </ZoneTemplate>
            </asp:WebPartZone>
        
        <br />
            <!-- Create Web Part zone for the personalization mode user control. -->
            <asp:WebPartZone ID="WebPartZone2" runat="server" HeaderText="Scope Change Zone" Height="109px">
                <ZoneTemplate>
                    <pmode:persmode  ID="Persmode1" runat="server" title="Scope Tool"/>
                </ZoneTemplate>
            </asp:WebPartZone>
   
    </form>
</body>
</html>

Der folgende Beispielcode erstellt eine Anmeldeseite. Nach einer erfolgreichen Anmeldung wird zur Aspx-Hauptseite umgeleitet.

Wichtig

Dieses Beispiel umfasst ein Textfeld, das Benutzereingaben akzeptiert, die ein potenzielles Sicherheitsrisiko darstellen. Standardmäßig stellen ASP.NET-Webseiten sicher, dass Benutzereingaben keine Skript- oder HTML-Elemente enthalten. Weitere Informationen finden Sie unter Übersicht über Skriptangriffe.

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Login ID="Login1" runat="server" BorderWidth="1px" BorderColor="#E6E2D8" BorderPadding="4"
            BorderStyle="Solid" BackColor="#F7F6F3" ForeColor="#333333" Font-Names="Verdana"
            Font-Size="0.8em" DestinationPageUrl="~/Defaultcs.aspx">
            <InstructionTextStyle ForeColor="Black" Font-Italic="True" Font-Size="0.8em" />
            <LoginButtonStyle Font-Names="Verdana" Font-Size="0.8em" BorderStyle="Solid" BorderWidth="1px"
                BorderColor="#CCCCCC" BackColor="#FFFBFF" ForeColor="#284775" />
            <TextBoxStyle Font-Size="0.8em" />
            <LabelStyle Font-Size="0.8em" />
            <TitleTextStyle ForeColor="White" Font-Size="0.9em" Font-Bold="True" BackColor="#5D7B9D" />
            <HyperLinkStyle Font-Size="0.8em" />
            <CheckBoxStyle Font-Size="0.8em" />
            <FailureTextStyle ForeColor="#FF0000" Font-Size="0.8em" />
        </asp:Login>   
You can create new users with the ASP.NET Web Site Administration Tool in Microsoft Visual Studio 2005. 
See also the web.config file for user authorization examples.
    </div>
    </form>
</body>
</html>
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Login ID="Login1" runat="server" BorderWidth="1px" BorderColor="#E6E2D8" BorderPadding="4"
            BorderStyle="Solid" BackColor="#F7F6F3" ForeColor="#333333" Font-Names="Verdana"
            Font-Size="0.8em" DestinationPageUrl="~/Defaultvb.aspx">
            <InstructionTextStyle ForeColor="Black" Font-Italic="True" Font-Size="0.8em" />
            <LoginButtonStyle Font-Names="Verdana" Font-Size="0.8em" BorderStyle="Solid" BorderWidth="1px"
                BorderColor="#CCCCCC" BackColor="#FFFBFF" ForeColor="#284775" />
            <TextBoxStyle Font-Size="0.8em" />
            <LabelStyle Font-Size="0.8em" />
            <TitleTextStyle ForeColor="White" Font-Size="0.9em" Font-Bold="True" BackColor="#5D7B9D" />
            <HyperLinkStyle Font-Size="0.8em" />
            <CheckBoxStyle Font-Size="0.8em" />
            <FailureTextStyle ForeColor="#FF0000" Font-Size="0.8em" />
        </asp:Login>   
You can create new users with the ASP.NET Web Site Administration Tool in Microsoft Visual Studio 2005. 
See also the web.config file for user authorization examples.
    </div>
    </form>
</body>
</html>

Der folgende Beispielcode ist ein Teil der Web.config-Datei für diese Anwendung. In diesem Abschnitt wird gezeigt, wie Sie die Autorisierung für einen Benutzer (in diesem Fall "user2") festlegen, um den freigegebenen Personalisierungsbereich einzugeben und Personalisierungsstatusinformationen zu ändern. Es zeigt auch ein Beispiel für eine Rolle, in diesem Fall "administrator", die verwendet werden kann, um Benutzern in der Rolle "administrator" das Eingeben des freigegebenen Personalisierungsbereichs und das Ändern von Personalisierungsstatusinformationen zu ermöglichen.

<webParts>
    <personalization defaultProvider="AspNetSqlPersonalizationProvider">
        <authorization>
            <allow users="user2" verbs="enterSharedScope, modifyState"/>
            <allow roles="admin" verbs="enterSharedScope, modifyState"/>
        </authorization>
    </personalization>
</webParts>
<webParts>
    <personalization defaultProvider="AspNetSqlPersonalizationProvider">
        <authorization>
            <allow users="user2" verbs="enterSharedScope, modifyState"/>
            <allow roles="admin" verbs="enterSharedScope, modifyState"/>
        </authorization>
    </personalization>
</webParts>

Der folgende Beispielcode erstellt ein Benutzersteuerelement namens Color.ascx, das es dem Benutzer ermöglicht, eine personalisierte Eigenschaft zu ändern, in diesem Fall die Hintergrundfarbe von zwei Textfeldern basierend auf dem aktuellen Personalisierungsbereich und den Autorisierungsrechten des Benutzers.

Wichtig

Dieses Beispiel umfasst ein Textfeld, das Benutzereingaben akzeptiert, die ein potenzielles Sicherheitsrisiko darstellen. Standardmäßig stellen ASP.NET-Webseiten sicher, dass Benutzereingaben keine Skript- oder HTML-Elemente enthalten. Weitere Informationen finden Sie unter Übersicht über Skriptangriffe.

<%@ Control Language="C#" %>

<script runat="server">
    // User a field to reference the current WebPartManager.
    private WebPartManager _manager;
    
    //  Defines personalized property for User scope. In this case, the property is
    //   the background color of the text box.
    [Personalizable(PersonalizationScope.User)]
    public System.Drawing.Color UserColorChoice
    {
        get
        {
            return _coloruserTextBox.BackColor;
        }
        set
        {
            _coloruserTextBox.BackColor = value;
        }
    }

    // Defines personalized property for Shared scope. In this case, the property is
    //   the background color of the text box.
    [Personalizable(PersonalizationScope.Shared) ]
    public System.Drawing.Color SharedColorChoice
    {
        get
        {
            return _colorsharedTextBox.BackColor;
        }
        set
        {
            _colorsharedTextBox.BackColor = value;
        }
    }


    void Page_Init(object sender, EventArgs e)
    {
       _manager = WebPartManager.GetCurrentWebPartManager(Page);       
    }

    protected void Page_Load(object src, EventArgs e) 
    {
     // If Web Parts manager scope is User, hide the button that changes shared control.
       if (_manager.Personalization.Scope == PersonalizationScope.User)
       {
           _sharedchangeButton.Visible = false;
                  if (!_manager.Personalization.IsModifiable)
                      _userchangeButton.Enabled = false;
       }
       else
       {
           _sharedchangeButton.Visible = true; 
                  if (!_manager.Personalization.IsModifiable)
                    {
                      _sharedchangeButton.Enabled = false;
                      _userchangeButton.Enabled = false;
                    }
       } 
    }
    
    // Changes color of the User text box background when button clicked by authorized user.
    protected void _userButton_Click(object src, EventArgs e)
    {
        switch(_coloruserTextBox.BackColor.Name)
        {
            case "Red":
                _coloruserTextBox.BackColor = System.Drawing.Color.Yellow;
                break;
            case "Yellow":
                _coloruserTextBox.BackColor = System.Drawing.Color.Green;
                break;
            case "Green":
                _coloruserTextBox.BackColor = System.Drawing.Color.Red;
                break;
        }
    }
        
    // Changes color of the Shared text box background when button clicked by authorized user.
    protected void _sharedButton_Click(object src, EventArgs e)
    {
        switch (_colorsharedTextBox.BackColor.Name)
        {
            case "Red":
                _colorsharedTextBox.BackColor = System.Drawing.Color.Yellow;
                break;
            case "Yellow":
                _colorsharedTextBox.BackColor = System.Drawing.Color.Green;
                break;
            case "Green":
                _colorsharedTextBox.BackColor = System.Drawing.Color.Red;
                break;
        }        
    }   

</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>WebParts Personalization Example</title>
</head>
<body>
<p>
    <asp:LoginName ID="LoginName1" runat="server" BorderWidth="500" BorderStyle="none" />
    <asp:LoginStatus ID="LoginStatus1" LogoutAction="RedirectToLoginPage" runat="server" />
</p>
    <asp:Label ID="ScopeLabel" Text="Scoped Properties:" runat="server" Width="289px"></asp:Label>
    <br />
    <table style="width: 226px">
        
        <tr>
            <td>
                <asp:TextBox ID="_coloruserTextBox" Font-Bold="True" Height="110px" 
                runat="server" Text="User Property" BackColor="red" Width="110px" /> 
            </td>
            <td>       
                <asp:TextBox ID="_colorsharedTextBox" runat="server" Height="110px" 
                Width="110px" Text="Shared Property" BackColor="red" Font-Bold="true" />
            </td>
       </tr>
        <tr>
            <td>
                <asp:Button Text="Change User Color" ID="_userchangeButton" 
                runat="server" OnClick="_userButton_Click" />
            </td>
            <td >
                <asp:Button Text="Change Shared Color" ID="_sharedchangeButton" 
                runat="server" OnClick="_sharedButton_Click" />
            </td>
        </tr>
    </table>
</body>
</html>
<%@ Control Language="VB" %>

<script runat="server">
     ' User a field to reference the current WebPartManager.
Private _manager As WebPartManager

'  Defines personalized property for User scope. In this case, the property is
'   the background color of the text box.

<Personalizable(PersonalizationScope.User)>  _
Public Property UserColorChoice() As System.Drawing.Color 
    Get
        Return _coloruserTextBox.BackColor
    End Get
    Set
        _coloruserTextBox.BackColor = value
    End Set
End Property

' Defines personalized property for Shared scope. In this case, the property is
'   the background color of the text box.

<Personalizable(PersonalizationScope.Shared)>  _
Public Property SharedColorChoice() As System.Drawing.Color 
    Get
        Return _colorsharedTextBox.BackColor
    End Get
    Set
        _colorsharedTextBox.BackColor = value
    End Set
End Property



Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs) 
    _manager = WebPartManager.GetCurrentWebPartManager(Page)

End Sub 'Page_Init


Protected Sub Page_Load(ByVal src As Object, ByVal e As EventArgs) 
    ' If Web Parts manager scope is User, hide the button that changes shared control.
    If _manager.Personalization.Scope = PersonalizationScope.User Then
        _sharedchangeButton.Visible = False
        If Not _manager.Personalization.IsModifiable Then
            _userchangeButton.Enabled = False
        End If
    Else
        _sharedchangeButton.Visible = True
        If Not _manager.Personalization.IsModifiable Then
            _sharedchangeButton.Enabled = False
            _userchangeButton.Enabled = False
        End If
    End If

End Sub 'Page_Load
 
' Changes color of the User text box background when button clicked by authorized user.
Protected Sub _userButton_Click(ByVal src As Object, ByVal e As EventArgs) 
    Select Case _coloruserTextBox.BackColor.Name
        Case "Red"
            _coloruserTextBox.BackColor = System.Drawing.Color.Yellow
        Case "Yellow"
            _coloruserTextBox.BackColor = System.Drawing.Color.Green
        Case "Green"
            _coloruserTextBox.BackColor = System.Drawing.Color.Red
    End Select

End Sub '_userButton_Click


' Changes color of the Shared text box background when button clicked by authorized user.
Protected Sub _sharedButton_Click(ByVal src As Object, ByVal e As EventArgs) 
    Select Case _colorsharedTextBox.BackColor.Name
        Case "Red"
            _colorsharedTextBox.BackColor = System.Drawing.Color.Yellow
        Case "Yellow"
            _colorsharedTextBox.BackColor = System.Drawing.Color.Green
        Case "Green"
            _colorsharedTextBox.BackColor = System.Drawing.Color.Red
    End Select

End Sub '_sharedButton_Click

</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>WebParts Personalization Example</title>
</head>
<body>
<p>
    <asp:LoginName ID="LoginName1" runat="server" BorderWidth="500" BorderStyle="none" />
    <asp:LoginStatus ID="LoginStatus1" LogoutAction="RedirectToLoginPage" runat="server" />
</p>
    <asp:Label ID="ScopeLabel" Text="Scoped Properties:" runat="server" Width="289px"></asp:Label>
    <br />
    <table style="width: 226px">
        
        <tr>
            <td>
                <asp:TextBox ID="_coloruserTextBox" Font-Bold="True" Height="110px" 
                runat="server" Text="User Property" BackColor="red" Width="110px" /> 
            </td>
            <td>       
                <asp:TextBox ID="_colorsharedTextBox" runat="server" Height="110px" 
                Width="110px" Text="Shared Property" BackColor="red" Font-Bold="true" />
            </td>
       </tr>
        <tr>
            <td>
                <asp:Button Text="Change User Color" ID="_userchangeButton" 
                runat="server" OnClick="_userButton_Click" />
            </td>
            <td >
                <asp:Button Text="Change Shared Color" ID="_sharedchangeButton" 
                runat="server" OnClick="_sharedButton_Click" />
            </td>
        </tr>
    </table>
</body>
</html>

Der folgende Beispielcode erstellt ein Benutzersteuerelement namens Persmode.ascx, das den aktuellen Personalisierungsbereich und die Benutzerrechte zum Ändern des Zustands und zum Eingeben des freigegebenen Bereichs anzeigt. Es verfügt auch über eine Schaltfläche zum Zurücksetzen des aktuellen Personalisierungszustands.

<%@ control language="C#" %>

<script runat="server">
  
 // Use a field to reference the current WebPartManager.
  private WebPartManager _manager;

    protected void Page_Load(object src, EventArgs e)
    {
        // Get the current Web Parts manager.
        _manager = WebPartManager.GetCurrentWebPartManager(Page);
        
        // All radio buttons are disabled; the button settings show what the current state is.
        EnterSharedRadioButton.Enabled = false;
        ModifyStateRadioButton.Enabled = false;

        // If Web Parts manager is in User scope, set scope button.
        if (_manager.Personalization.Scope == PersonalizationScope.User)
            UserScopeRadioButton.Checked = true;
        else
            SharedScopeRadioButton.Checked = true;

        // Based on current user rights to enter Shared scope, set buttons.
        if (_manager.Personalization.CanEnterSharedScope)
        {
            EnterSharedRadioButton.Checked = true;
            No_Shared_Scope_Label.Visible = false;
            Toggle_Scope_Button.Enabled = true;
        }
        else
        {
            EnterSharedRadioButton.Checked = false;
            No_Shared_Scope_Label.Visible = true;
            Toggle_Scope_Button.Enabled = false;
        }

        // Based on current user rights to modify personalization state, set buttons.
        if (_manager.Personalization.IsModifiable)
        {
            ModifyStateRadioButton.Checked = true;
            Reset_User_Button.Enabled = true;
        }
        else
        {
            ModifyStateRadioButton.Checked = false;
            Reset_User_Button.Enabled = false;
        }
    }
    // <snippet6>
  // Resets all of a user and shared personalization data for the page.
    protected void Reset_CurrentState_Button_Click(object src, EventArgs e)
    {
        // User must be authorized to modify state before a reset can occur.
        //When in user scope, all users by default can change their own data.
        if (_manager.Personalization.IsModifiable)
        {
            _manager.Personalization.ResetPersonalizationState();
        }
    }
  //  </snippet6>

    // <snippet7>
    // Allows authorized user to change personalization scope.
    protected void Toggle_Scope_Button_Click(object sender, EventArgs e)
    {
        if (_manager.Personalization.CanEnterSharedScope)
        {
            _manager.Personalization.ToggleScope();
        }
        
    }
 // </snippet7>
</script>
<div>
    &nbsp;<asp:Panel ID="Panel1" runat="server" 
    Borderwidth="1" 
    Width="208px" 
    BackColor="lightgray"
    Font-Names="Verdana, Arial, Sans Serif" Height="214px" >
    <asp:Label ID="Label1" runat="server" 
      Text="Page Scope" 
      Font-Bold="True"
      Font-Size="8pt"
      Width="120px" />&nbsp;<br />
    
    
      <asp:RadioButton ID="UserScopeRadioButton" runat="server" 
        Text="User" 
        AutoPostBack="true"
        GroupName="Scope"  
         Enabled="false" />
      <asp:RadioButton ID="SharedScopeRadioButton" runat="server" 
        Text="Shared" 
        AutoPostBack="true"
        GroupName="Scope" 
        Enabled="false" />
        <br />
        <asp:Label BorderStyle="None" Font-Bold="True" Font-Names="Courier New" ID="No_Shared_Scope_Label" Font-Size="Smaller" ForeColor="red"
           runat="server" Visible="false" Width="179px">User cannot enter Shared scope</asp:Label>
        <br />
        <asp:Label ID="Label2" runat="server" 
      Text="Current User Can:" 
      Font-Bold="True"
      Font-Size="8pt"
      Width="165px" />
      <br />
        <asp:RadioButton ID="ModifyStateRadioButton" runat="server" 
        Text="Modify State" Width="138px" />
        <br />
        <asp:RadioButton ID="EnterSharedRadioButton" runat="server" 
        Text="Enter Shared Scope" 
        AutoPostBack="true"  />&nbsp;<br />
        <br />
        <asp:Button ID="Toggle_Scope_Button" OnClick="Toggle_Scope_Button_Click" runat="server"
            Text="Change Scope" Width="186px" /><br />
        <br />
        <asp:Button ID="Reset_User_Button" OnClick="Reset_CurrentState_Button_Click" runat="server"
            Text="Reset Current Personalization" Width="185px" /></asp:Panel>
    &nbsp; &nbsp;
</div>
<%@ control language="VB" %>

<script runat="server">
  
  ' Use a field to reference the current WebPartManager.
Private _manager As WebPartManager


Protected Sub Page_Load(ByVal src As Object, ByVal e As EventArgs) 
    ' Get the current Web Parts manager.
    _manager = WebPartManager.GetCurrentWebPartManager(Page)
    
    ' All radio buttons are disabled; the button settings show what the current state is.
    EnterSharedRadioButton.Enabled = False
    ModifyStateRadioButton.Enabled = False
    
    ' If Web Parts manager is in User scope, set scope button.
    If _manager.Personalization.Scope = PersonalizationScope.User Then
        UserScopeRadioButton.Checked = True
    Else
        SharedScopeRadioButton.Checked = True
    End If 
    ' Based on current user rights to enter Shared scope, set buttons.
    If _manager.Personalization.CanEnterSharedScope Then
        EnterSharedRadioButton.Checked = True
        No_Shared_Scope_Label.Visible = False
        Toggle_Scope_Button.Enabled = True
    Else
        EnterSharedRadioButton.Checked = False
        No_Shared_Scope_Label.Visible = True
        Toggle_Scope_Button.Enabled = False
    End If
    
    ' Based on current user rights to modify personalization state, set buttons.
    If _manager.Personalization.IsModifiable Then
        ModifyStateRadioButton.Checked = True
        Reset_User_Button.Enabled = True
    Else
        ModifyStateRadioButton.Checked = False
        Reset_User_Button.Enabled = False
    End If

End Sub 'Page_Load

' <snippet6>
' Resets all of a user and shared personalization data for the page.
Protected Sub Reset_CurrentState_Button_Click(ByVal src As Object, ByVal e As EventArgs) 
    ' User must be authorized to modify state before a reset can occur.
    'When in user scope, all users by default can change their own data.
    If _manager.Personalization.IsModifiable Then
        _manager.Personalization.ResetPersonalizationState()
    End If

End Sub 'Reset_CurrentState_Button_Click

'  </snippet6>
' <snippet7>
' Allows authorized user to change personalization scope.
Protected Sub Toggle_Scope_Button_Click(ByVal sender As Object, ByVal e As EventArgs) 
    If _manager.Personalization.CanEnterSharedScope Then
        _manager.Personalization.ToggleScope()
    End If

End Sub 'Toggle_Scope_Button_Click 
' </snippet7>
</script>
<div>
    &nbsp;<asp:Panel ID="Panel1" runat="server" 
    Borderwidth="1" 
    Width="208px" 
    BackColor="lightgray"
    Font-Names="Verdana, Arial, Sans Serif" Height="214px" >
    <asp:Label ID="Label1" runat="server" 
      Text="Page Scope" 
      Font-Bold="True"
      Font-Size="8pt"
      Width="120px" />&nbsp;<br />
    
    
      <asp:RadioButton ID="UserScopeRadioButton" runat="server" 
        Text="User" 
        AutoPostBack="true"
        GroupName="Scope"  
         Enabled="false" />
      <asp:RadioButton ID="SharedScopeRadioButton" runat="server" 
        Text="Shared" 
        AutoPostBack="true"
        GroupName="Scope" 
        Enabled="false" />
        <br />
        <asp:Label BorderStyle="None" Font-Bold="True" Font-Names="Courier New" ID="No_Shared_Scope_Label" Font-Size="Smaller" ForeColor="red"
           runat="server" Visible="false" Width="179px">User cannot enter Shared scope</asp:Label>
        <br />
        <asp:Label ID="Label2" runat="server" 
      Text="Current User Can:" 
      Font-Bold="True"
      Font-Size="8pt"
      Width="165px" />
      <br />
        <asp:RadioButton ID="ModifyStateRadioButton" runat="server" 
        Text="Modify State" Width="138px" />
        <br />
        <asp:RadioButton ID="EnterSharedRadioButton" runat="server" 
        Text="Enter Shared Scope" 
        AutoPostBack="true"  />&nbsp;<br />
        <br />
        <asp:Button ID="Toggle_Scope_Button" OnClick="Toggle_Scope_Button_Click" runat="server"
            Text="Change Scope" Width="186px" /><br />
        <br />
        <asp:Button ID="Reset_User_Button" OnClick="Reset_CurrentState_Button_Click" runat="server"
            Text="Reset Current Personalization" Width="185px" /></asp:Panel>
    &nbsp; &nbsp;
</div>

Hinweise

Diese Klasse implementiert die Logik, die zum Ausführen von Personalisierungsvorgängen auf niedrigerer Ebene erforderlich ist. Obwohl die WebPartManager Klasse den allgemeinen Lebenszyklus der Personalisierung verwaltet, ist sie für die WebPartPersonalization tatsächliche Implementierung der physischen Schritte verantwortlich, die zum Ausführen bestimmter Personalisierungsaktionen erforderlich sind. Die WebPartPersonalization -Klasse wiederum basiert auf einer Implementierung von, PersonalizationProvider um mit dem zugrunde liegenden Datenspeicher für Personalisierungsinformationen zu kommunizieren.

Wenn Sie die Standardimplementierung von WebPartManagerverwenden, wird eine Instanz der -Klasse erstellt, die WebPartPersonalization Sie verwenden können, indem Sie auf die Personalization -Eigenschaft verweisen. Wenn Sie beispielsweise auf die InitialScope -Eigenschaft zugreifen möchten, geben Sie an WebPartManager.Personalization.InitialScope.

Hinweise für Vererber

Die WebPartPersonalization -Klasse arbeitet eng mit einem WebPartManager Steuerelement und dem Rest der Personalisierungsinfrastruktur zusammen. Die Standardimplementierung der Personalisierung ist ein sehr robustes Subsystem, das Ihre Personalisierungsanforderungen erfüllen sollte. Wenn Sie die Personalisierung anpassen möchten, können Sie in den meisten Fällen einen Datenanbieter für die Verwendung als Personalisierungsanbieter erstellen, indem Sie eine Klasse erstellen, die von PersonalizationProvidererbt.

Wenn Sie ein Personalisierungssubsystem erstellen möchten, das sich erheblich von dem von und WebPartPersonalization den WebPartManager Klassen unterscheidet, sollten Sie eine benutzerdefinierte WebPartPersonalization Implementierung erstellen, indem Sie von WebPartPersonalization ableiten und Ihre eigene benutzerdefinierte Logik hinzufügen. Erstellen Sie dann eine benutzerdefinierte WebPartManager Implementierung, indem Sie von abgeleitet werden WebPartManager, fügen Sie Ihre eigene benutzerdefinierte Logik hinzu, und überschreiben Sie die CreatePersonalization() -Methode, um ihre benutzerdefinierte WebPartPersonalization Implementierung zurückzugeben. Da ein WebPartManager Steuerelement Anforderungen an die Personalisierungsinfrastruktur über eine WebPartPersonalization Instanz sendet, interagiert das WebPartManager Steuerelement nicht direkt mit Implementierungen oder enthält Verweise auf PersonalizationProvider implementierungen.

Konstruktoren

WebPartPersonalization(WebPartManager)

Initialisiert eine neue Instanz der WebPartPersonalization-Klasse.

Felder

EnterSharedScopeUserCapability

Stellt die WebPartUserCapability-Instanz der Autorisierung eines Benutzers für den Zugriff auf den Shared-Bereich dar.

ModifyStateUserCapability

Stellt die WebPartUserCapability-Instanz der Autorisierung eines Benutzers zum Ändern des Personalisierungszustands dar.

Eigenschaften

CanEnterSharedScope

Gibt einen Wert zurück, der angibt, ob der Benutzer befugt ist, auf den Shared-Bereich zuzugreifen.

Enabled

Gibt einen Wert zurück, der angibt, ob die Personalisierung für das zugeordnete WebPartManager-Steuerelement aktiviert werden muss.

HasPersonalizationState

Gibt einen Wert zurück, der angibt, ob der aktuellen Seite und dem Personalisierungsbereich Personalisierungsdaten zugeordnet sind.

InitialScope

Ruft den aktuellen Standardpersonalisierungsbereich ab oder legt diesen fest.

IsEnabled

Ruft einen Wert ab, der angibt, ob die Personalisierung aktiviert ist und ob Personalisierungsdaten für diese Instanz der WebPartPersonalization-Klasse erfolgreich geladen wurden.

IsInitialized

Ruft einen Wert ab, der angibt, ob die Personalisierung aktiviert ist und ob Personalisierungsdaten für diese Instanz der WebPartPersonalization-Klasse erfolgreich geladen wurden.

IsModifiable

Ruft einen Wert ab, der angibt, ob der aktuelle Benutzer befugt ist, Zustandsinformationen zu ändern.

ProviderName

Ruft den Anbieternamen für die Personalisierung ab oder legt diesen fest.

Scope

Ruft den aktuellen Personalisierungsbereich für das übergeordnete WebPartManager-Steuerelement ab.

ShouldResetPersonalizationState

Ruft einen Wert ab, der angibt, ob die Personalisierungsdaten der aktuellen Seite zurückgesetzt wurden, oder legt diesen fest (wenn beispielsweise eine Anforderung zum Löschen der Personalisierungsdaten aus dem zugrunde liegenden Datenspeicher gestellt wurde).

UserCapabilities

Ruft den Satz der für den aktuellen Benutzer verfügbaren Benutzerfunktionen aus WebPartUserCapability ab.

WebPartManager

Ruft eine Instanz des aktuellen übergeordneten WebPartManager-Steuerelements ab, das dieser WebPartPersonalization-Instanz zugeordnet ist.

Methoden

ApplyPersonalizationState()

Wendet Personalisierungsdaten auf das übergeordnete WebPartManager-Steuerelement an.

ApplyPersonalizationState(WebPart)

Wendet Personalisierungsdaten auf das angegebene WebPart-Steuerelement an, wenn eine entsprechende Anforderung durch das übergeordnete WebPartManager-Steuerelement gestellt wurde.

ChangeScope(PersonalizationScope)

Ändert die PersonalizationScope-Instanz der aktuellen Seite auf den angegebenen Bereich.

CopyPersonalizationState(WebPart, WebPart)

Extrahiert den Personalisierungszustand aus einem Webparts-Steuerelement und wendet diesen auf ein zweites Webparts-Steuerelement an.

EnsureEnabled(Boolean)

Stellt sicher, dass die WebPartPersonalization-Instanz die Initialisierung abgeschlossen hat, oder dass der aktuelle Benutzer die erforderliche Berechtigung zum Bearbeiten von Personalisierungszuständen besitzt.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
ExtractPersonalizationState()

Extrahiert Personalisierungsdaten aus dem übergeordneten WebPartManager-Steuerelement.

ExtractPersonalizationState(WebPart)

Extrahiert Personalisierungsdaten aus einem Webparts-Steuerelement, wenn eine entsprechende Anforderung durch das übergeordnete WebPartManager-Steuerelement gestellt wurde.

GetAuthorizationFilter(String)

Ruft gegebenenfalls den Autorisierungsfilter ab, der dem angegebenen Webparts-Steuerelement zugeordnet ist.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
Load()

Initialisiert die Personalisierung.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ResetPersonalizationState()

Setzt Personalisierungsdaten für die aktuelle Seite, den aktuellen Bereich und den aktuellen Benutzer im zugrunde liegenden Datenspeicher zurück.

Save()

Speichert Personalisierungsdaten für die aktuelle Seite, den aktuellen Bereich und den aktuellen Benutzer im zugrunde liegenden Datenspeicher.

SetDirty()

Markiert das übergeordnete WebPartManager-Steuerelement und gibt dadurch an, dass Personalisierungsdaten "geändert" wurden.

SetDirty(WebPart)

Markiert das übergeordnete Webparts-Steuerelement und gibt dadurch an, dass Personalisierungsdaten "geändert" wurden.

ToggleScope()

Schaltet den Personalisierungsbereich der aktuellen Seite von User auf Shared oder von Shared auf User um.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für:

Weitere Informationen