WebPartManager.Personalization 屬性

定義

取得包含網頁個人化資料之物件的參考。

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 元件個人化概觀

適用於

另請參閱