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. In diesem Beispiel sind fünf Dateien enthalten:

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

  • Ein Benutzersteuerelement, Color.ascx das es einem Benutzer ermöglicht, eine personalisierte Eigenschaft zu ändern, die eine Hintergrundfarbe eines Textfelds basierend auf den Autorisierungsrechten des Benutzers anwendet, um Statusinformationen zu ändern und freigegebenen Bereich einzugeben.

  • Ein Benutzersteuerelement, Persmode.ascx das angibt, was der aktuelle Seitenbereich ist und welche Rechte der aktuelle Benutzer freigegebenen Bereich eingeben muss, oder um Daten zu ändern; es bietet auch zwei Schaltflächen; eine zum Ändern des Bereichs und eines zum Zurücksetzen aktueller 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 bereitstellt.

Der folgende Code erstellt eine ASPX-Seite mit einer WebPartManager und zwei Webpartzonen und zeigt die Color.ascx steuerelemente 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. Sehen Sie sich die datei Web.config ein Beispiel für einen Benutzer an, der der Autorisierung in der Konfigurationsdatei erteilt hat, um den Bereich zu ändern und Statusinformationen 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>

Im folgenden Beispielcode wird eine Anmeldeseite erstellt. Nach einer erfolgreichen Anmeldung leitet sie zur Haupt-aspx-Seite um.

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 festlegen, in diesem Fall "user2", um 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" die Eingabe 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>

Im folgenden Beispielcode wird ein Benutzersteuerelement erstellt Color.ascx, das dem Benutzer das Ändern einer personalisierten Eigenschaft ermöglicht, 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>

Im folgenden Beispielcode wird ein Benutzersteuerelement erstellt, Persmode.ascxdas den aktuellen Personalisierungsbereich und die Benutzerrechte zum Ändern des Zustands und zum Eingeben des freigegebenen Bereichs anzeigt. Es verfügt auch über eine Reset-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 niedriger ebener Ebene erforderlich ist. Obwohl die WebPartManager Klasse den lebenszyklusübergreifenden Lebenszyklus der Personalisierung verwaltet, ist es die Klasse, die WebPartPersonalization dafür verantwortlich ist, die physischen Schritte zu implementieren, die erforderlich sind, um bestimmte Personalisierungsaktionen durchzuführen. Die WebPartPersonalization Klasse basiert wiederum auf einer Implementierung der PersonalizationProvider Kommunikation mit dem zugrunde liegenden Datenspeicher für Personalisierungsinformationen.

Wenn Sie die Standardimplementierung des WebPartManagerObjekts verwenden, wird eine Instanz der WebPartPersonalization Klasse erstellt, die Sie verwenden können, indem Sie auf die Personalization Eigenschaft verweisen. Wenn Sie beispielsweise auf die InitialScope Eigenschaft zugreifen möchten, würden Sie angeben WebPartManager.Personalization.InitialScope.

Hinweise für Vererber

Die WebPartPersonalization Klasse arbeitet eng mit einem WebPartManager Steuerelement und der restlichen Personalisierungsinfrastruktur zusammen. Die Standardimplementierung der Personalisierung ist ein sehr robustes Subsystem, das Ihren Personalisierungsanforderungen entsprechen sollte. In den meisten Fällen können Sie, wenn Sie die Personalisierung anpassen möchten, einen Datenanbieter für die Verwendung als Personalisierungsanbieter erstellen, indem Sie eine Klasse erstellen, die PersonalizationProvidervon .

Wenn Sie ein Personalisierungs-Subsystem erheblich von dem erstellen möchten, das von den WebPartPersonalization und den WebPartManager Klassen bereitgestellt wird, sollten Sie eine benutzerdefinierte Implementierung erstellen, indem Sie ihre WebPartPersonalization eigene benutzerdefinierte WebPartPersonalization Logik ableiten und hinzufügen. Erstellen Sie dann eine benutzerdefinierte Implementierung, indem Sie ihre eigene benutzerdefinierte Logik ableiten WebPartManagerund die CreatePersonalization() Methode außer Kraft setzen, um Ihre benutzerdefinierte WebPartManager WebPartPersonalization Implementierung zurückzugeben. Da ein WebPartManager Steuerelement Anforderungen an die Personalisierungsinfrastruktur über eine WebPartPersonalization Instanz anfordert, interagiert das WebPartManager Steuerelement nicht direkt mit oder hä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

Siehe auch