如何:设定 Web 部件的目标访问群体

上次修改时间: 2010年1月13日

适用范围: SharePoint Server 2010

可以设定 Microsoft SharePoint Server 2010 中 Web 部件的目标,以便仅显示给特定组或访问群体的成员。通过在浏览器中编辑 Web 部件来实现此操作时,SharePoint Server 2010 会将用于标识访问群体的 GUID 赋值给 Web 部件的 AuthorizationFilter 属性。通过在代码中执行相同的操作,您可以采用编程方式将 Web 部件的目标设定为某一访问群体。如果执行此操作,当用户选择在浏览器中编辑 Web 部件时,将显示正确的访问群体名称并且可以编辑该名称。

在浏览器中将 Web 部件的目标设定为特定访问群体

使用以下过程可以在浏览器中将 Web 部件的目标设定为特定访问群体。

在浏览器中将 Web 部件的目标设定为特定访问群体

  1. 在包含 Web 部件的网页上,在"网站操作"菜单中,单击"编辑页面"。

  2. 在 Web 部件上,单击"Web 部件"下拉菜单,然后单击"编辑 Web 部件"。

  3. 在"高级"下的"目标访问群体"框中键入一个或多个访问群体名称。

以编程方式将 Web 部件的目标设定为特定访问群体

可以将三种类型的访问群体赋值给 AuthorizationFilter 属性。若要以编程方式将 Web 部件的目标设定为全局访问群体,可以使用 AudienceManager 对象检索所需访问群体的 GUID,然后将该 GUID 赋值给 Web 部件的 AuthorizationFilter 属性。还可以将通讯组列表的轻型目录访问协议 (LDAP) 可分辨名称或 SharePoint 组的名称值赋值给此属性。

SharePoint Server 2010 框架要求使用一对分号(";;")分隔这三种类型的值。多个全局访问群体和 SharePoint 组值用逗号分隔,多个通讯组列表值用换行符("\n")分隔。以下示例构建的字符串可用于向 AuthorizationFilter 属性赋值。

string[] audienceIDs = new string[] {"GUID", "GUID"};
string[] distributionLists = new string[] 
{"LDAP Distinguished Distribution List Name", "LDAP Distinguished Distribution List Name"};
string[] sharePointGroups = new string[] {"SharePoint Group Name", "SharePoint Group Name"};

string result = string.Format("{0};;{1};;{2}",
string.Join(",", audienceIDs),
string.Join("\n", distributionLists),
string.Join(",", sharePointGroups));
Dim audienceIDs() As String = {"GUID", "GUID"}
Dim distributionLists() As String = {"LDAP Distinguished Distribution List Name", "LDAP Distinguished Distribution List Name"}
Dim sharePointGroups() As String = {"SharePoint Group Name", "SharePoint Group Name"}

Dim result As String = String.Format("{0};;{1};;{2}", String.Join(",", audienceIDs), String.Join(vbLf, distributionLists), String.Join(",", sharePointGroups))

如果处理的是 Web 部件页,则可以使用 SPLimitedWebPartManager 对象获取要编辑其属性的 Web 部件。以下示例演示如何检索某一访问群体的 GUID,并将其赋值给网页上第一个 Web 部件的 AuthorizationFilter 属性。该示例假定您引用了 Microsoft.SharePoint、Microsoft.SharePoint.WebPartPages 和 Microsoft.Office.Server.Audience,并对它们使用了 using 语句。请注意,该示例在 GUID 后添加了四个分号(";;;;"),以表明不再添加通讯组列表或 SharePoint 组。

如果以这种方式将 Web 部件的目标设定为特定访问群体,则在用户使用浏览器编辑 Web 部件时,指定的访问群体的名称将显示在"目标访问群体"框中。

using (SPWeb site = (SPWeb)properties.Feature.Parent)
   {
// Get SPLimitedWebPartManager for "default.aspx" page.
      using (SPLimitedWebPartManager webPartManager = site.GetLimitedWebPartManager("default.aspx", PersonalizationScope.Shared))
         {
            AudienceManager audienceManager = new AudienceManager(ServerContext.Current);
// Assign the GUID for "Sample Audience" and "Sample Audience 2" to the AuthorizationFilter property of the first Web Part on the page.
            webPartManager.WebParts[0].AuthorizationFilter = string.Format("{0}, {1};;;;", 
               audienceManager.GetAudience("Sample Audience").AudienceID, audienceManager.GetAudience("Sample Audience2").AudienceID);
// Save the changes to the Web Part.
            webPartManager.SaveChanges(webPartManager.WebParts[0]);
         }
   }
 Using site As SPWeb = CType(properties.Feature.Parent, SPWeb)
' Get SPLimitedWebPartManager for "default.aspx" page.
     Using webPartManager As SPLimitedWebPartManager = site.GetLimitedWebPartManager("default.aspx", PersonalizationScope.Shared)
           Dim audienceManager As New AudienceManager(ServerContext.Current)
' Assign the GUID for "Sample Audience" and "Sample Audience 2" to the AuthorizationFilter property of the first Web Part on the page.
          webPartManager.WebParts(0).AuthorizationFilter = String.Format("{0}, {1};;;;", audienceManager.GetAudience("Sample Audience").AudienceID, audienceManager.GetAudience("Sample Audience2").AudienceID)
' Save the changes to the Web Part.
          webPartManager.SaveChanges(webPartManager.WebParts(0))
     End Using
End Using

请参阅

任务

如何:设定列表项的目标访问群体

引用

AudienceManager