WebPartPersonalization Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Реализует низкоуровневые операции персонализации.
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
- Наследование
-
WebPartPersonalization
- Атрибуты
Примеры
В следующем примере кода показано, как используется класс, а также пример того, как WebPartPersonalization область персонализации влияет на результаты персонализированных свойств. В этом примере есть пять файлов:
Страница .aspx, которая декларативно создает две зоны веб-частей, каждая из которых имеет элемент управления.
Пользовательский элемент управления, который позволяет
Color.ascxпользователю изменять персонализированное свойство, которое применяет цвет фона текстового поля на основе прав авторизации пользователя для изменения сведений о состоянии и ввода общей области.Пользовательский элемент управления, который указывает
Persmode.ascx, что такое текущая область страницы и какие права у текущего пользователя требуется ввести общую область или изменить данные; она также предоставляет две кнопки; одну для изменения области и одну для сброса текущих сведений о персонализации пользователей.Элемент управления входа, используемый для авторизации пользователей.
Файл Web.config с разделом, который содержит пример авторизации пользователя для изменения состояния персонализации и ввода общей области.
Следующий код создает страницу aspx с WebPartManager двумя зонами веб-частей и отображает элементы Color.ascx управления и Persmode.ascx элементы управления. Страница загружает страницу входа, которая используется для получения текущей информации о пользователе. Используйте средство администрирования веб-сайта ASP.NET в Microsoft Visual Studio 2005 для создания пользователей для доступа к странице. Ознакомьтесь с файлом Web.config для примера предоставления пользователем авторизации в файле конфигурации для изменения области и изменения сведений о состоянии.
<%@ 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>
В следующем примере кода создается страница входа. После успешного входа он перенаправляется на главную страницу aspx.
Это важно
В этом примере есть текстовое поле, которое принимает входные данные пользователя, которое является потенциальной угрозой безопасности. По умолчанию ASP.NET веб-страницы проверяют, что входные данные пользователя не включают скрипт или ЭЛЕМЕНТЫ 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="~/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>
Следующий пример кода — это часть файла Web.config для этого приложения. В этом разделе показано, как задать авторизацию для пользователя в данном случае user2, чтобы ввести общую область персонализации и изменить сведения о состоянии персонализации. В нем также показан пример роли в данном случае "администратор", который можно использовать для разрешения пользователям в роли "администратор" ввести общую область персонализации и изменить сведения о состоянии персонализации.
<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>
В следующем примере кода создается пользовательский элемент управления, который позволяет Color.ascxпользователю изменять персонализированное свойство, в этом случае цвет фона двух текстовых полей на основе текущей области персонализации и прав авторизации пользователя.
Это важно
В этом примере есть текстовое поле, которое принимает входные данные пользователя, которое является потенциальной угрозой безопасности. По умолчанию ASP.NET веб-страницы проверяют, что входные данные пользователя не включают скрипт или ЭЛЕМЕНТЫ HTML. Дополнительные сведения см. в разделе "Обзор эксплойтов скриптов".
<%@ 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>
В следующем примере кода создается пользовательский элемент управления, который Persmode.ascxотображает текущую область персонализации и права пользователя для изменения состояния и ввода общей области. Она также имеет кнопку сброса для сброса текущего состояния персонализации.
<%@ 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>
Комментарии
Этот класс реализует логику, необходимую для выполнения операций персонализации нижнего уровня. WebPartManager Хотя класс управляет высокоуровневой жизненной циклом персонализации, это WebPartPersonalization класс, отвечающий за фактические реализацию физических шагов, необходимых для выполнения конкретных действий персонализации. Класс WebPartPersonalization , в свою очередь, зависит от реализации PersonalizationProvider взаимодействия с базовым хранилищем данных для сведений о персонализации.
При использовании реализации WebPartManagerпо умолчанию он создает экземпляр WebPartPersonalization класса, который можно использовать, ссылаясь Personalization на свойство. Например, чтобы получить доступ к свойству InitialScope , необходимо указать WebPartManager.Personalization.InitialScope.
Примечания для тех, кто наследует этот метод
Класс WebPartPersonalization тесно взаимодействует с элементом WebPartManager управления и остальной частью инфраструктуры персонализации. Реализация персонализации по умолчанию — это очень надежная подсистема, которая должна соответствовать вашим потребностям персонализации. В большинстве случаев, если вы хотите настроить персонализацию, можно создать поставщик данных для использования в качестве поставщика персонализации, создав класс, наследуемый от PersonalizationProvider.
Если вы хотите создать подсистему персонализации, которая значительно отличается от той, которую предоставляют WebPartPersonalization классы, WebPartManager необходимо создать пользовательскую WebPartPersonalization реализацию, исходя из WebPartPersonalization и добавить собственную пользовательскую логику. Затем создайте пользовательскую WebPartManager реализацию, наследуя WebPartManagerее, добавьте собственную пользовательскую логику и переопределите CreatePersonalization() метод для возврата пользовательской WebPartPersonalization реализации. WebPartManager Так как элемент управления выполняет запросы к инфраструктуре персонализации посредством экземпляраWebPartPersonalization, WebPartManager элемент управления не взаимодействует напрямую с реализацией или не содержит ссылки на PersonalizationProvider нее.
Конструкторы
| Имя | Описание |
|---|---|
| WebPartPersonalization(WebPartManager) |
Инициализирует новый экземпляр класса WebPartPersonalization. |
Поля
| Имя | Описание |
|---|---|
| EnterSharedScopeUserCapability |
WebPartUserCapability Представляет экземпляр авторизации пользователя для ввода Shared области. |
| ModifyStateUserCapability |
WebPartUserCapability Представляет экземпляр авторизации пользователя для изменения состояния персонализации. |
Свойства
| Имя | Описание |
|---|---|
| CanEnterSharedScope |
Возвращает значение, указывающее, разрешен ли пользователь ввести Shared область. |
| Enabled |
Возвращает значение, указывающее, запрашивается ли персонализация для связанного WebPartManager элемента управления. |
| HasPersonalizationState |
Возвращает значение, указывающее, имеют ли текущая страница и область персонализации связанные данные персонализации. |
| InitialScope |
Возвращает или задает область персонализации по умолчанию. |
| IsEnabled |
Возвращает значение, указывающее, включена ли персонализация и успешно загружены данные персонализации для этого экземпляра WebPartPersonalization класса. |
| IsInitialized |
Возвращает значение, указывающее, включена ли персонализация и успешно загружены данные персонализации для этого экземпляра WebPartPersonalization класса. |
| IsModifiable |
Возвращает значение, указывающее, разрешен ли текущий пользователь изменять сведения о состоянии. |
| ProviderName |
Возвращает или задает имя поставщика для персонализации. |
| Scope |
Возвращает текущую область персонализации для родительского WebPartManager элемента управления. |
| ShouldResetPersonalizationState |
Возвращает или задает значение, указывающее, были ли сброшены данные персонализации текущей страницы (например, запрос на удаление данных персонализации из базового хранилища данных). |
| UserCapabilities |
Возвращает набор возможностей пользователей, WebPartUserCapability предоставленных текущему пользователю. |
| WebPartManager |
Возвращает экземпляр текущего родительского WebPartManager элемента управления, связанного с этим WebPartPersonalization экземпляром. |
Методы
| Имя | Описание |
|---|---|
| ApplyPersonalizationState() |
Применяет данные персонализации к родительскому WebPartManager элементу управления. |
| ApplyPersonalizationState(WebPart) |
Применяет данные персонализации к указанному WebPart элементу управления при запросе на это родительским WebPartManager элементом управления. |
| ChangeScope(PersonalizationScope) |
Изменяет экземпляр текущей страницы PersonalizationScope на указанную область. |
| CopyPersonalizationState(WebPart, WebPart) |
Извлекает состояние персонализации из одного элемента управления веб-частей и применяет его ко второму элементу управления веб-частей. |
| EnsureEnabled(Boolean) |
Гарантирует, что экземпляр завершил инициализацию или что WebPartPersonalization текущий пользователь имеет права изменять состояние персонализации. |
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| ExtractPersonalizationState() |
Извлекает данные персонализации из родительского WebPartManager элемента управления. |
| ExtractPersonalizationState(WebPart) |
Извлекает данные персонализации из элемента управления веб-частей при запросе на это родительским WebPartManager элементом управления. |
| GetAuthorizationFilter(String) |
Извлекает фильтр авторизации, связанный с указанным элементом управления веб-частей. |
| GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| Load() |
Инициализирует персонализацию. |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| ResetPersonalizationState() |
Сбрасывает данные персонализации для текущей страницы, области и пользователя в базовом хранилище данных. |
| Save() |
Сохраняет данные персонализации для текущей страницы, области и пользователя в базовом хранилище данных. |
| SetDirty() |
Помечает родительский WebPartManager элемент управления как измененные данные персонализации ("грязный"). |
| SetDirty(WebPart) |
Помечает указанный элемент управления веб-частей как измененные данные персонализации ("грязный"). |
| ToggleScope() |
Переключает область персонализации текущей страницы с параметров на Shared или из SharedUser нееUser. |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |