WebPartPersonalization Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Implementuje operacje personalizacji niskiego poziomu.
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
- Dziedziczenie
-
WebPartPersonalization
- Atrybuty
Przykłady
Poniższy przykład kodu pokazuje, jak WebPartPersonalization jest używana klasa, a także przykład sposobu, w jaki zakres personalizacji wpływa na wyniki spersonalizowanych właściwości. W tym przykładzie jest pięć plików:
Strona .aspx, która deklaratywnie tworzy dwie strefy składników Web Part, z których każda ma kontrolkę.
Kontrolka użytkownika o nazwie
Color.ascx
, która umożliwia użytkownikowi zmianę spersonalizowanej właściwości, która stosuje kolor tła pola tekstowego na podstawie praw autoryzacji użytkownika w celu modyfikowania informacji o stanie i wprowadzania zakresu udostępnionego.Kontrolka użytkownika o nazwie
Persmode.ascx
, która wskazuje, jaki jest bieżący zakres strony i jakie prawa musi wprowadzić bieżący użytkownik w zakresie udostępnionym lub zmodyfikować dane; udostępnia również dwa przyciski; jeden, aby zmienić zakres i jeden w celu zresetowania bieżących informacji o personalizacji użytkownika.Kontrolka logowania używana do autoryzowania użytkowników.
Plik Web.config z sekcją zawierającą przykład autoryzowania użytkownika w celu zmodyfikowania stanu personalizacji i wprowadzenia zakresu udostępnionego.
Poniższy kod tworzy stronę aspx z dwiema WebPartManager strefami składników Web Part i wyświetla kontrolki Color.ascx
i Persmode.ascx
. Strona ładuje stronę logowania używaną do pobierania bieżących informacji o użytkowniku. Użyj narzędzia do administrowania witrynami sieci Web ASP.NET w programie Microsoft Visual Studio 2005, aby utworzyć użytkowników w celu uzyskania dostępu do strony. Zobacz plik Web.config, aby uzyskać przykład autoryzacji przyznanej przez użytkownika w pliku konfiguracji, aby zmienić zakres i zmodyfikować informacje o stanie.
<%@ 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>
Poniższy przykładowy kod tworzy stronę logowania. Po pomyślnym zalogowaniu nastąpi przekierowanie do głównej strony aspx.
Ważne
W tym przykładzie znajduje się pole tekstowe, które akceptuje dane wejściowe użytkownika, co jest potencjalnym zagrożeniem bezpieczeństwa. Domyślnie ASP.NET strony sieci Web weryfikują, czy dane wejściowe użytkownika nie zawierają skryptów ani elementów HTML. Aby uzyskać więcej informacji, zobacz Omówienie luk w zabezpieczeniach skryptów.
<%@ 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>
Poniższy przykładowy kod jest częścią pliku Web.config dla tej aplikacji. W tej sekcji pokazano, jak ustawić autoryzację dla użytkownika, w tym przypadku "user2", aby wprowadzić wspólny zakres personalizacji i zmodyfikować informacje o stanie personalizacji. Pokazuje również przykład roli, w tym przypadku "administrator", która może służyć do zezwalania użytkownikom w roli "administrator" na wprowadzanie udostępnionego zakresu personalizacji i modyfikowanie informacji o stanie personalizacji.
<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>
Poniższy przykładowy kod tworzy kontrolkę użytkownika o nazwie Color.ascx
, która umożliwia użytkownikowi zmianę spersonalizowanej właściwości, w tym przypadku kolor tła dwóch pól tekstowych na podstawie bieżącego zakresu personalizacji i praw autoryzacji użytkownika.
Ważne
W tym przykładzie znajduje się pole tekstowe, które akceptuje dane wejściowe użytkownika, co jest potencjalnym zagrożeniem bezpieczeństwa. Domyślnie ASP.NET strony sieci Web weryfikują, czy dane wejściowe użytkownika nie zawierają skryptów ani elementów HTML. Aby uzyskać więcej informacji, zobacz Omówienie luk w zabezpieczeniach skryptów.
<%@ 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>
Poniższy przykładowy kod tworzy kontrolkę użytkownika o nazwie Persmode.ascx
, która pokazuje bieżący zakres personalizacji oraz prawa użytkownika do modyfikowania stanu i wprowadzania zakresu udostępnionego. Ma również przycisk resetowania do resetowania bieżącego stanu personalizacji.
<%@ 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>
<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" /> <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" /> <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>
</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>
<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" /> <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" /> <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>
</div>
Uwagi
Ta klasa implementuje logikę wymaganą do przeprowadzania operacji personalizacji niższego poziomu. WebPartManager Mimo że klasa zarządza ogólnym cyklem życia personalizacji, jest WebPartPersonalization to klasa, która jest odpowiedzialna za rzeczywiste wdrożenie fizycznych kroków niezbędnych do wykonania określonych akcji personalizacji. Klasa WebPartPersonalization z kolei opiera się na implementacji PersonalizationProvider do komunikowania się z podstawowym magazynem danych na potrzeby informacji o personalizacji.
Jeśli używasz domyślnej implementacji klasy WebPartManager, tworzy wystąpienie WebPartPersonalization klasy, której można użyć, odwołując Personalization się do właściwości. Aby na przykład uzyskać dostęp do InitialScope właściwości, należy określić WebPartManager.Personalization.InitialScope
wartość .
Uwagi dotyczące dziedziczenia
Klasa WebPartPersonalization ściśle współpracuje z kontrolą i resztą WebPartManager infrastruktury personalizacji. Domyślna implementacja personalizacji to bardzo niezawodny podsystem, który powinien spełniać potrzeby personalizacji. W większości przypadków, jeśli chcesz dostosować personalizację, możesz utworzyć dostawcę danych do użycia jako dostawca personalizacji, tworząc klasę dziedziczą z PersonalizationProviderklasy .
Jeśli chcesz utworzyć podsystem personalizacji znacznie inny niż ten dostarczony przez WebPartPersonalization klasy i , należy utworzyć niestandardową WebPartPersonalization implementację, korzystając z WebPartPersonalization metody i WebPartManager dodając własną logikę niestandardową. Następnie utwórz implementację niestandardową WebPartManager , korzystając z WebPartManagermetody , dodaj własną logikę niestandardową i przesłoń CreatePersonalization() metodę, aby zwrócić implementację niestandardową WebPartPersonalization . Ponieważ kontrolka WebPartManager wysyła żądania do infrastruktury personalizacji w drodze WebPartPersonalization wystąpienia, WebPartManager kontrolka nie współdziała bezpośrednio z implementacjami ani nie przechowuje odwołań do PersonalizationProvider implementacji.
Konstruktory
WebPartPersonalization(WebPartManager) |
Inicjuje nowe wystąpienie klasy WebPartPersonalization. |
Pola
EnterSharedScopeUserCapability |
WebPartUserCapability Reprezentuje wystąpienie autoryzacji użytkownika, aby wprowadzić Shared zakres. |
ModifyStateUserCapability |
WebPartUserCapability Reprezentuje wystąpienie autoryzacji użytkownika w celu zmodyfikowania stanu personalizacji. |
Właściwości
CanEnterSharedScope |
Zwraca wartość wskazującą, czy użytkownik ma autoryzację do wprowadzania Shared zakresu. |
Enabled |
Zwraca wartość wskazującą, czy personalizacja ma być włączona dla skojarzonej WebPartManager kontrolki. |
HasPersonalizationState |
Zwraca wartość wskazującą, czy bieżąca strona i zakres personalizacji mają skojarzone dane personalizacji. |
InitialScope |
Pobiera lub ustawia domyślny zakres personalizacji. |
IsEnabled |
Pobiera wartość wskazującą, czy personalizacja jest włączona i pomyślnie załadowała dane personalizacji dla tego wystąpienia WebPartPersonalization klasy. |
IsInitialized |
Pobiera wartość wskazującą, czy personalizacja jest włączona i pomyślnie załadowała dane personalizacji dla tego wystąpienia WebPartPersonalization klasy. |
IsModifiable |
Pobiera wartość wskazującą, czy bieżący użytkownik ma uprawnienia do modyfikowania informacji o stanie. |
ProviderName |
Pobiera lub ustawia nazwę dostawcy na potrzeby personalizacji. |
Scope |
Pobiera bieżący zakres personalizacji dla kontrolki nadrzędnej WebPartManager . |
ShouldResetPersonalizationState |
Pobiera lub ustawia wartość wskazującą, czy dane personalizacji bieżącej strony zostały zresetowane (na przykład zostało wykonane żądanie usunięcia danych personalizacji z bazowego magazynu danych). |
UserCapabilities |
Pobiera zestaw funkcji użytkownika przyznanych WebPartUserCapability bieżącemu użytkownikowi. |
WebPartManager |
Pobiera wystąpienie bieżącej kontrolki nadrzędnej WebPartManager skojarzonej z tym WebPartPersonalization wystąpieniem. |
Metody
ApplyPersonalizationState() |
Stosuje dane personalizacji do kontrolki nadrzędnej WebPartManager . |
ApplyPersonalizationState(WebPart) |
Stosuje dane personalizacji do określonej WebPart kontrolki, gdy jest to wymagane przez kontrolkę nadrzędną WebPartManager . |
ChangeScope(PersonalizationScope) |
Zmienia wystąpienie bieżącej strony PersonalizationScope na określony zakres. |
CopyPersonalizationState(WebPart, WebPart) |
Wyodrębnia stan personalizacji z jednej kontrolki składników Web Part i stosuje go do drugiej kontrolki składników Web Part. |
EnsureEnabled(Boolean) |
Gwarantuje, że WebPartPersonalization wystąpienie zostało ukończone inicjowanie lub że bieżący użytkownik ma prawa do modyfikowania stanu personalizacji. |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
ExtractPersonalizationState() |
Wyodrębnia dane personalizacji z kontrolki nadrzędnej WebPartManager . |
ExtractPersonalizationState(WebPart) |
Wyodrębnia dane personalizacji z kontrolki składników Web Part, gdy jest to wymagane przez kontrolkę nadrzędną WebPartManager . |
GetAuthorizationFilter(String) |
Pobiera filtr autoryzacji, jeśli istnieje, skojarzony z określoną kontrolką składników Web Part. |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetType() |
Type Pobiera bieżące wystąpienie. (Odziedziczone po Object) |
Load() |
Inicjuje personalizację. |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
ResetPersonalizationState() |
Resetuje dane personalizacji dla bieżącej strony, zakresu i użytkownika w bazowym magazynie danych. |
Save() |
Zapisuje dane personalizacji dla bieżącej strony, zakresu i użytkownika w bazowym magazynie danych. |
SetDirty() |
Oznacza kontrolkę nadrzędną WebPartManager jako dane personalizacji, które uległy zmianie (jest "brudne"). |
SetDirty(WebPart) |
Oznacza określoną kontrolkę składników Web Part jako dane personalizacji, które uległy zmianie (jest "brudne"). |
ToggleScope() |
Przełącza zakres personalizacji bieżącej strony z User do Shared lub z Shared do User. |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |