Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

WebPartDescription-Klasse

Hinweis: Diese Klasse ist neu in .NET Framework, Version 2.0.

Stellt Informationen zu einem WebPart-Steuerelement bereit, die Sie in einem Katalog von Webparts-Steuerelementen anzeigen können, ohne eine Instanz des Steuerelements erstellen zu müssen.

Namespace: System.Web.UI.WebControls.WebParts
Assembly: System.Web (in system.web.dll)

public class WebPartDescription
public class WebPartDescription
public class WebPartDescription

Wenn WebPart-Steuerelemente in einem Katalog von Steuerelementen angezeigt werden, die Benutzer einer Seite hinzufügen können, sind einige grundlegende Informationen zu den einzelnen Steuerelementen erforderlich. So sind beispielsweise ein Titel und eine Beschreibung für das Steuerelement nützlich, damit Benutzern, die einen Katalog anzeigen, ausreichend Informationen zur Verfügung stehen, um entscheiden zu können, ob sie der Seite ein Steuerelement hinzufügen sollen. Ein Katalog von WebPart-Steuerelementen kann jedoch viele Steuerelemente enthalten, und es würde sich negativ auf die Leistung einer Anwendung auswirken, wenn eine Instanz jedes WebPart-Steuerelements erstellt werden müsste, um die im Katalog anzuzeigenden Informationen zu extrahieren.

Dank der WebPartDescription-Klasse ist es nicht erforderlich, eine Instanz eines WebPart-Steuerelements zu erstellen, um die in einem Katalog von Steuerelementen anzuzeigenden Informationen zu diesem Steuerelement abzurufen. Wenn sich eine Seite im Kataloganzeigemodus befindet, wird ein WebPartDescription-Objekt im Webparts-Steuerelementsatz auch zusammen mit den verschiedenen CatalogPart-Steuerelementen verwendet.

Die WebPartDescription-Klasse besitzt zwei Überladungen ihres Konstruktors: eine, die ein WebPart-Steuerelement als Parameter annimmt, wenn eine Instanz verfügbar ist (der WebPartDescription-Konstruktor), und eine, die mehrere Zeichenfolgen mit Informationen zum Steuerelement als Parameter akzeptiert (der WebPartDescription-Konstruktor).

Die WebPartDescription-Klasse veranlasst außerdem, dass mehrere Eigenschaften entworfen werden, die beschreibende Informationen für WebPart-Steuerelemente enthalten. In der folgenden Tabelle werden die WebPartDescription-Eigenschaften sowie und die jeweilige Entsprechung jeder Eigenschaft in einem WebPart-Steuerelement zusammengefasst.

Description-Eigenschaft

Zugehörige Eigenschaft des Part-Steuerelements

ID

ID

Title

Title

Description

Description

CatalogIconImageUrl

CatalogIconImageUrl

Das folgende Codebeispiel veranschaulicht die programmgesteuerte Verwendung der WebPartDescription-Klasse. Normalerweise wird dieser Typ in erster Linie vom Webparts-Steuerelementsatz verwendet, doch in diesem Codebeispiel wird einfach die grundlegende programmgesteuerte Verwendung der wichtigsten Description-Eigenschaften dargestellt.

Das Codebeispiel besteht aus vier Teilen:

  • Einem Benutzersteuerelement, mit dessen Hilfe Sie die Anzeigemodi auf einer Webseite ändern können.

  • Einem benutzerdefiniertes WebPart-Steuerelement.

  • Einer Webseite zum Hosten der anderen Steuerelemente.

  • Einer Erläuterung des Codebeispiels.

Der erste Teil des Codebeispiels ist das Benutzersteuerelement. Der Quellcode für das Benutzersteuerelement stammt aus einem anderen Thema. Ausführliche Informationen zum Benutzersteuerelement finden Sie im Thema Exemplarische Vorgehensweise: Wechseln des Anzeigemodus auf einer Webparts-Seite.

<%@ control language="C#" classname="DisplayModeMenuCS"%>
<script runat="server">
  
 // Use a field to reference the current WebPartManager.
  WebPartManager _manager;

  void Page_Init(object sender, EventArgs e)
  {
    Page.InitComplete += new EventHandler(InitComplete);
    
  }  

  void InitComplete(object sender, System.EventArgs e)
  {
    _manager = WebPartManager.GetCurrentWebPartManager(Page);

    String browseModeName = WebPartManager.BrowseDisplayMode.Name;

    // Fill the dropdown with the names of supported display modes.
    foreach (WebPartDisplayMode mode in _manager.SupportedDisplayModes)
    {
      String modeName = mode.Name;
      // Make sure a mode is enabled before adding it.
      if (mode.IsEnabled(_manager))
      {
        ListItem item = new ListItem(modeName, modeName);
        DisplayModeDropdown.Items.Add(item);
      }
    }

    // If shared scope is allowed for this user, display the scope-switching
    // UI and select the appropriate radio button for the current user scope.
    if (_manager.Personalization.CanEnterSharedScope)
    {
      Panel2.Visible = true;
      if (_manager.Personalization.Scope == PersonalizationScope.User)
        RadioButton1.Checked = true;
      else
        RadioButton2.Checked = true;
    }
    
  }
 
  // Change the page to the selected display mode.
  void DisplayModeDropdown_SelectedIndexChanged(object sender, EventArgs e)
  {
    String selectedMode = DisplayModeDropdown.SelectedValue;

    WebPartDisplayMode mode = _manager.SupportedDisplayModes[selectedMode];
    if (mode != null)
      _manager.DisplayMode = mode;
  }

  // Set the selected item equal to the current display mode.
  void Page_PreRender(object sender, EventArgs e)
  {
    ListItemCollection items = DisplayModeDropdown.Items;
    int selectedIndex = 
      items.IndexOf(items.FindByText(_manager.DisplayMode.Name));
    DisplayModeDropdown.SelectedIndex = selectedIndex;
  }

  // Reset all of a user's personalization data for the page.
  protected void LinkButton1_Click(object sender, EventArgs e)
  {
    _manager.Personalization.ResetPersonalizationState();
  }

  // If not in User personalization scope, toggle into it.
  protected void RadioButton1_CheckedChanged(object sender, EventArgs e)
  {
    if (_manager.Personalization.Scope == PersonalizationScope.Shared)
      _manager.Personalization.ToggleScope();
  }

  // If not in Shared scope, and if user is allowed, toggle the scope.
  protected void RadioButton2_CheckedChanged(object sender, EventArgs e)
  {
    if (_manager.Personalization.CanEnterSharedScope && 
        _manager.Personalization.Scope == PersonalizationScope.User)
      _manager.Personalization.ToggleScope();
  }
</script>
<div>
  <asp:Panel ID="Panel1" runat="server" 
    Borderwidth="1" 
    Width="230" 
    BackColor="lightgray"
    Font-Names="Verdana, Arial, Sans Serif" >
    <asp:Label ID="Label1" runat="server" 
      Text="&nbsp;Display Mode" 
      Font-Bold="true"
      Font-Size="8"
      Width="120" />
    <div>
    <asp:DropDownList ID="DisplayModeDropdown" runat="server"  
      AutoPostBack="true" 
      Width="120"
      OnSelectedIndexChanged="DisplayModeDropdown_SelectedIndexChanged" />
    <asp:LinkButton ID="LinkButton1" runat="server"
      Text="Reset User State" 
      ToolTip="Reset the current user's personalization data for the page."
      Font-Size="8"  
      OnClick="LinkButton1_Click" />
    </div>
    <asp:Panel ID="Panel2" runat="server" 
      GroupingText="Personalization Scope"
      Font-Bold="true"
      Font-Size="8" 
      Visible="false" >
      <asp:RadioButton ID="RadioButton1" runat="server" 
        Text="User" 
        AutoPostBack="true"
        GroupName="Scope" OnCheckedChanged="RadioButton1_CheckedChanged" />
      <asp:RadioButton ID="RadioButton2" runat="server" 
        Text="Shared" 
        AutoPostBack="true"
        GroupName="Scope" 
        OnCheckedChanged="RadioButton2_CheckedChanged" />
    </asp:Panel>
  </asp:Panel>
</div>

Der zweite Teil des Codebeispiels ist ein benutzerdefiniertes WebPart-Steuerelement. Um das Codebeispiel auszuführen, müssen Sie diesen Quellcode kompilieren. Sie können den Code explizit kompilieren und die sich ergebende Assembly im Ordner Bin der Website oder im globalen Assemblycache ablegen. Alternativ können Sie den Quellcode im Ordner App_Code der Site ablegen, wo er zur Laufzeit dynamisch kompiliert wird. In diesem Codebeispiel wird die Methode der dynamischen Kompilierung verwendet. Eine exemplarische Vorgehensweise, die Kompilierungsmethoden veranschaulicht, finden Sie unter Exemplarische Vorgehensweise: Entwickeln und Verwenden eines benutzerdefinierten Serversteuerelements.

using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Security.Permissions;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

namespace Samples.AspNet.CS.Controls
{
  [AspNetHostingPermission(SecurityAction.Demand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  public class TextDisplayWebPart : WebPart
  {
    private String _contentText = null;
    TextBox input;
    Label DisplayContent;
    Literal lineBreak;

    [Personalizable(), WebBrowsable]
    public String ContentText
    {
      get { return _contentText; }
      set { _contentText = value; }
    }

    protected override void CreateChildControls()
    {
      Controls.Clear();
      DisplayContent = new Label();
      DisplayContent.BackColor = Color.LightBlue;
      DisplayContent.Text = this.ContentText;
      this.Controls.Add(DisplayContent);

      lineBreak = new Literal();
      lineBreak.Text = @"<br />";
      Controls.Add(lineBreak);

      input = new TextBox();
      this.Controls.Add(input);
      Button update = new Button();
      update.Text = "Set Label Content";
      update.Click += new EventHandler(this.submit_Click);
      this.Controls.Add(update);

    }

    private void submit_Click(object sender, EventArgs e)
    {
      // Update the label string.
      if (input.Text != String.Empty)
      {
        _contentText = input.Text + @"<br />";
        input.Text = String.Empty;
        DisplayContent.Text = this.ContentText;
      }
    }

  }
}

Der dritte Teil des Codebeispiels ist die Webseite. Im oberen Bereich befinden sich zwei Register-Direktiven: eine, die das Benutzersteuerelement registriert, und die zweite, die das benutzerdefinierte WebPart-Steuerelement registriert, dessen Quelldatei sich im Ordner App_Code der Site befindet. Die Seite enthält ein <asp:catalogzone>-Element, das wiederum deklarative Verweise auf zwei Steuerelemente enthält: das benutzerdefinierte WebPart-Steuerelement mit dem Namen TextDisplayWebPart und ein BulletedList-Webserversteuerelement, das zur Laufzeit als WebPart-Steuerelement behandelt wird, da das WebPartManager-Steuerelement es mit einem GenericWebPart-Objekt umschließt. Im Code für die Button1_Click-Methode werden die verfügbaren WebPartDescription-Objekte für die WebPart-Steuerelemente im Katalog mithilfe der GetAvailableWebPartDescriptions-Methode abgerufen, und dann werden alle Beschreibungsdetails an die Seite geschrieben.

<%@ Page Language="C#" %>
<%@ Register TagPrefix="uc1"
    TagName="DisplayModeMenuCS"
    Src="~/DisplayModeMenuCS.ascx" %>
<%@ Register TagPrefix="aspSample" 
    Namespace="Samples.AspNet.CS.Controls"%>

<!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)
  {
    Label1.Text = String.Empty;
    
    WebPartDescriptionCollection descriptions = 
      DeclarativeCatalogPart1.GetAvailableWebPartDescriptions();

    foreach (WebPartDescription desc in descriptions)
    {
      Label1.Text += "ID: " + desc.ID + "<br />" +
        "Title: " + desc.Title + "<br />" +
        "Description: " + desc.Description + "<br />" +
        "ImageUrl: " + desc.CatalogIconImageUrl + "<br />" +
        "<hr />";
    }
  }

  protected void Page_PreRender(object sender, EventArgs e)
  {
    if (mgr1.DisplayMode == WebPartManager.CatalogDisplayMode)
    {
      Button1.Visible = true;
      Label1.Visible = true;
    }
    else
    {
      Button1.Visible = false;
      Label1.Visible = false;
    }
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
  <title>Untitled Page</title>
</head>
<body>
  <form id="form1" runat="server">
    <asp:WebPartManager ID="mgr1" runat="server">
    </asp:WebPartManager>
    <uc1:DisplayModeMenuCS ID="menu1" runat="server" />
    <asp:WebPartZone ID="WebPartZone1" runat="server">
      <ZoneTemplate>
        <asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>
      </ZoneTemplate>
    </asp:WebPartZone>
    <asp:CatalogZone ID="CatalogZone1" runat="server">
      <ZoneTemplate>
        <asp:DeclarativeCatalogPart ID="DeclarativeCatalogPart1" runat="server">
          <WebPartsTemplate>
            <aspSample:TextDisplayWebPart ID="txtDisplayWebPart1" runat="server"
              Title="Text Display"
              Description="Displays entered text in a label control."
              CatalogIconImageUrl="MyWebPartIcon.gif" 
              />
            <asp:BulletedList 
              ID="BulletedList1"
              Runat="server"
              DisplayMode="HyperLink" 
              Title="Favorite Links"
              CatalogIconImageUrl="MyLinksIcon.gif"
              Description="My Favorite Links">
              <asp:ListItem Value="http://msdn.microsoft.com">
                MSDN
              </asp:ListItem>
              <asp:ListItem Value="http://www.asp.net">
                ASP.NET
              </asp:ListItem>
              <asp:ListItem Value="http://www.msn.com">
                MSN
              </asp:ListItem>
            </asp:BulletedList>
          </WebPartsTemplate>
        </asp:DeclarativeCatalogPart>
      </ZoneTemplate>
    </asp:CatalogZone> 
    <hr />
    <asp:Button ID="Button1" runat="server" 
      Text="List WebPartDescription Info" OnClick="Button1_Click" /> 
    <br />
    <asp:Label ID="Label1" runat="server" Text="" />
    <div>
    </div>
  </form>
</body>
</html>

Schalten Sie die Seite nach dem Laden in einem Browser durch Auswahl der Option Katalog im Dropdownlisten-Steuerelement Anzeigemodus in den Kataloganzeigemodus. Im Katalog werden die beiden Steuerelemente angezeigt, die Sie der Seite hinzufügen können. Klicken Sie auf die Schaltfläche List WebPartDescription Info. Daraufhin schreibt der Code die Werte aller verfügbaren WebPartDescription an die Seite. Dies veranschaulicht, dass Sie Beschreibungsdetails für WebPart-Steuerelemente in einem Katalog abrufen können, ohne Instanzen der Steuerelemente selbst erstellen zu müssen.

  • AspNetHostingPermission  für den Betrieb in einer Hostumgebung. Anforderungswert: LinkDemand; Berechtigungswert: Minimal.
  • AspNetHostingPermission  für den Betrieb in einer Hostumgebung. Anforderungswert: InheritanceDemand, Berechtigungswert: Minimal.

System.Object
  System.Web.UI.WebControls.WebParts.WebPartDescription

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

.NET Framework

Unterstützt in: 2.0
Anzeigen: