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() |
Переключает область персонализации текущей страницы с области User на область Shared или с области Shared на область User. |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |