WebPartManager.Personalization 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得包含網頁個人化資料之物件的參考。
public:
property System::Web::UI::WebControls::WebParts::WebPartPersonalization ^ Personalization { System::Web::UI::WebControls::WebParts::WebPartPersonalization ^ get(); };
[System.Web.UI.PersistenceMode(System.Web.UI.PersistenceMode.InnerProperty)]
public System.Web.UI.WebControls.WebParts.WebPartPersonalization Personalization { get; }
[<System.Web.UI.PersistenceMode(System.Web.UI.PersistenceMode.InnerProperty)>]
member this.Personalization : System.Web.UI.WebControls.WebParts.WebPartPersonalization
Public ReadOnly Property Personalization As WebPartPersonalization
屬性值
WebPartPersonalization,包含個人化資料。
- 屬性
範例
下列程式代碼範例示範如何以程序設計方式使用 Personalization 屬性。
下列網頁可讓使用者進入編輯模式,以編輯控件的某些層面 Calendar 。 [ 切換範圍 ] 按鈕會將頁面切換為使用者或共用個人化範圍。 [ 編輯模式 ] 和 [ 流覽模式 ] 按鈕會將頁面切換為適當的顯示模式。 請注意,在 <script>
檔案的 tag 區段中,處理事件的兩個方法會使用 Personalization 屬性來存取基礎對象的實用成員。 具體而言,這些方法ToggleScope會在透過 Personalization 屬性存取的物件上使用 方法和 Scope 屬性。
<%@ 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">
protected void Button1_Click(object sender, EventArgs e)
{
if ((mgr1.Personalization.Scope == PersonalizationScope.User)
&& (mgr1.Personalization.CanEnterSharedScope))
{
mgr1.Personalization.ToggleScope();
}
else if (mgr1.Personalization.Scope ==
PersonalizationScope.Shared)
{
mgr1.Personalization.ToggleScope();
}
else
{
// If the user cannot enter shared scope you may want
// to notify them on the page.
}
}
protected void Button2_Click(object sender, EventArgs e)
{
mgr1.DisplayMode = WebPartManager.EditDisplayMode;
}
protected void Button3_Click(object sender, EventArgs e)
{
mgr1.DisplayMode = WebPartManager.BrowseDisplayMode;
}
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = "Scope is: "
+ mgr1.Personalization.Scope.ToString();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:WebPartManager ID="mgr1" runat="server" />
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<asp:Calendar ID="Calendar1" runat="server" />
</ZoneTemplate>
</asp:WebPartZone>
<asp:EditorZone ID="EditorZone1" runat="server">
<ZoneTemplate>
<asp:AppearanceEditorPart ID="AppearanceEditorPart1"
runat="server" />
<asp:BehaviorEditorPart ID="BehaviorEditorPart1"
runat="server" />
</ZoneTemplate>
</asp:EditorZone>
<hr />
<asp:Button ID="Button1" runat="server" Text="Toggle Scope" OnClick="Button1_Click" />
<asp:Button ID="Button2" runat="server" Text="Edit Mode" OnClick="Button2_Click" />
<asp:Button ID="Button3" runat="server" Text="Browse Mode" OnClick="Button3_Click" />
<br />
<asp:Label ID="Label1" runat="server" Text="" />
</div>
</form>
</body>
</html>
<%@ Page Language="vb" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Button1_Click(ByVal sender As Object, _
ByVal e As System.EventArgs)
If mgr1.Personalization.Scope = PersonalizationScope.User _
AndAlso mgr1.Personalization.CanEnterSharedScope Then
mgr1.Personalization.ToggleScope()
ElseIf mgr1.Personalization.Scope = _
PersonalizationScope.Shared Then
mgr1.Personalization.ToggleScope()
Else
' If the user cannot enter shared scope you may want
' to notify them on the page.
End If
End Sub
Protected Sub Button2_Click(ByVal sender As Object, _
ByVal e As System.EventArgs)
mgr1.DisplayMode = WebPartManager.EditDisplayMode
End Sub
Protected Sub Button3_Click(ByVal sender As Object, _
ByVal e As System.EventArgs)
mgr1.DisplayMode = WebPartManager.BrowseDisplayMode
End Sub
Protected Sub Page_Load(ByVal sender As Object, _
ByVal e As System.EventArgs)
Label1.Text = "Scope is: " & mgr1.Personalization.Scope.ToString()
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:WebPartManager ID="mgr1" runat="server" />
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<asp:Calendar ID="Calendar1" runat="server" />
</ZoneTemplate>
</asp:WebPartZone>
<asp:EditorZone ID="EditorZone1" runat="server">
<ZoneTemplate>
<asp:AppearanceEditorPart ID="AppearanceEditorPart1"
runat="server" />
<asp:BehaviorEditorPart ID="BehaviorEditorPart1"
runat="server" />
</ZoneTemplate>
</asp:EditorZone>
<hr />
<asp:Button ID="Button1" runat="server" Text="Toggle Scope" OnClick="Button1_Click" />
<asp:Button ID="Button2" runat="server" Text="Edit Mode" OnClick="Button2_Click" />
<asp:Button ID="Button3" runat="server" Text="Browse Mode" OnClick="Button3_Click" />
<br />
<asp:Label ID="Label1" runat="server" Text="" />
</div>
</form>
</body>
</html>
若要執行程式碼範例,您也必須讓使用者或使用者個人化共用範圍中的頁面。 在區段中,將專案新增至 Web.config 檔案 <system.web>
,看起來像下列標記。
<webParts>
<personalization>
<authorization>
<allow
users="[Replace the text and brackets with a user name or
group.]"
roles="admin"
verbs="enterSharedScope" />
</authorization>
</personalization>
</webParts>
在瀏覽器中載入頁面之後,按兩下 [ 切換範圍 ] 按鈕,並注意到頁面現在會顯示已共享範圍。 單擊 [編輯模式 ] 以變更顯示模式,按下可見控件上的動詞功能表,然後從功能表中選取 [ 編輯 ]。 請注意,這兩個編輯控件的使用者介面 (UI) 隨即出現。 現在,按兩下 [ 流覽模式 ] 傳回正常流覽。 如果頁面指出它位於共用範圍中,請再次按兩下 [切換範圍 ] 以確保頁面位於用戶範圍中。 接下來,請遵循相同的步驟再次編輯控件,但請注意,現在在編輯 UI 中, BehaviorEditorPart 控件不會出現。 這是因為此控件只有在頁面位於共用個人化範圍時才能運作。
備註
屬性 Personalization 提供一種方式,可透過控件存取 WebPartPersonalization 與頁面 WebPartManager 相關聯的物件。 您可以使用這個屬性來存取個人化物件的各種成員。 例如,您可以使用 ToggleScope 方法來將頁面的個人化範圍從共用切換為用戶範圍,反之亦然。 您也可以了解頁面目前的個人化範圍、頁面上是否甚至已啟用個人化、用於個人化數據的提供者等等。
請注意,屬性所 Personalization 參考的數據只是控件所追蹤 WebPartManager 的頁面層級個人化數據。 控件特定的個人化數據,例如控件上 WebPart 可個人化屬性的值,不是 屬性的 Personalization 一部分。
注意
如需 Web 元件個人化的詳細資訊,請參閱 Web 元件個人化概觀。