WebPartChrome Klasse

Definition

Ermöglicht Entwicklern, das Rendering ausschließlich für die ausgewählten Bereiche von WebPart-Steuerelementen oder Serversteuerelementen in einer WebPartZoneBase-Zone zu überschreiben.

public ref class WebPartChrome
public class WebPartChrome
type WebPartChrome = class
Public Class WebPartChrome
Vererbung
WebPartChrome

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie die WebPartChrome Klasse zum Überschreiben des Standardrenderings von WebPart Steuerelementen in einer WebPartZoneBase Zone verwendet wird.

Das Codebeispiel weist vier Teile auf:

  • Ein Benutzersteuerelement, mit dem Sie Anzeigemodi auf einer Webparts Seite ändern können.

  • Eine Webseite, auf der alle Steuerelemente im Beispiel gehostet werden.

  • Eine Klasse, die den Quellcode für eine benutzerdefinierte WebPartZoneBase Zone und eine WebPartChrome Klasse enthält.

  • Eine Erläuterung der Funktionsweise des Beispiels.

Der erste Teil des Codebeispiels ist das Benutzersteuerelement. Der Quellcode für das Benutzersteuerelement stammt aus einem anderen Thema. Damit dieses Codebeispiel funktioniert, müssen Sie die ASCX-Datei für das Benutzersteuerelement aus der exemplarischen Vorgehensweise abrufen: Ändern von Anzeigemodi in einem Webparts Seitenthema, und platzieren Sie die Datei im selben Ordner wie die ASPX-Seite in diesem Codebeispiel.

Der zweite Teil des Beispiels ist die Webseite. Beachten Sie, dass oben in der Datei eine Register Direktive vorhanden ist, um die kompilierte Komponente und ein Tagpräfix zu registrieren. Beachten Sie außerdem, dass die Seite mithilfe des Elements <aspSample:MyZone> auf die benutzerdefinierte Zone verweist und mehrere Standard-ASP.NET Serversteuerelemente innerhalb der Zone enthält. Die Serversteuerelemente implementieren keine tatsächlichen Funktionen; sie werden hier nur verwendet, um zu veranschaulichen, wie die WebPartChrome Klassenfeatures auf Renderingzonen angewendet werden. Beachten Sie, dass diese Serversteuerelemente, obwohl sie keine tatsächlichen WebPart Steuerelemente sind, alle automatisch (nach ASP.NET) mit einem GenericWebPart Objekt zur Laufzeit umschlossen werden, sodass sie dieselbe Funktionalität wie WebPart Steuerelemente haben.

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

<!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>ASP.NET Example</title>
</head>
<body>
  <form id="form1" runat="server">
    <asp:WebPartManager ID="WebPartManager1" runat="server" />
    <uc1:DisplayModeMenuCS id="menu1" runat="server" />
    <aspSample:MyZone ID="WebPartZone1" runat="server"
      RenderVerbsInMenu="true">
      <PartTitleStyle Font-Bold="true"
        BorderWidth="1" 
        BackColor="lightblue"/>
      <ZoneTemplate>
        <asp:Panel runat="server" id="panel1" 
          title="Vote on Issues" >
          <asp:RadioButtonList ID="RadioButtonList1" runat="server" >
            <asp:ListItem Value="1">Issue 1</asp:ListItem>
            <asp:ListItem Value="2">Issue 2</asp:ListItem>
            <asp:ListItem Value="3">Issue 3</asp:ListItem>
          </asp:RadioButtonList>
          <asp:Button ID="Button1" runat="server" Text="Cast Vote" />
        </asp:Panel>
        <asp:FileUpload ID="FileUpload1" runat="server" 
          title="Upload Files" />
      </ZoneTemplate>
    </aspSample:MyZone>
    <asp:WebPartZone ID="WebPartZone2" runat="server" />
    <asp:EditorZone ID="EditorZone1" runat="server">
      <ZoneTemplate>
        <asp:AppearanceEditorPart ID="AppearanceEditorPart1" runat="server" />
      </ZoneTemplate>
    </asp:EditorZone>
  </form>
</body>
</html>
<%@ Page Language="vb" %>
<%@ Register TagPrefix="uc1" 
  TagName="DisplayModeMenuVB"
  Src="~/DisplayModeMenuVB.ascx" %>
<%@ Register TagPrefix="aspSample" 
  Namespace="Samples.AspNet.VB.Controls" 
  Assembly="MyChromeVB" %>

<!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>ASP.NET Example</title>
</head>
<body>
  <form id="form1" runat="server">
    <asp:WebPartManager ID="WebPartManager1" runat="server" />
    <uc1:DisplayModeMenuVB id="menu1" runat="server" />
    <aspSample:MyZone ID="WebPartZone1" runat="server"
      RenderVerbsInMenu="true">
      <PartTitleStyle Font-Bold="true"
        BorderWidth="1" 
        BackColor="lightblue"/>
      <ZoneTemplate>
        <asp:Panel runat="server" id="panel1" 
          title="Vote on Issues" >
          <asp:RadioButtonList ID="RadioButtonList1" runat="server" >
            <asp:ListItem Value="1">Issue 1</asp:ListItem>
            <asp:ListItem Value="2">Issue 2</asp:ListItem>
            <asp:ListItem Value="3">Issue 3</asp:ListItem>
          </asp:RadioButtonList>
          <asp:Button ID="Button1" runat="server" Text="Cast Vote" />
        </asp:Panel>
        <asp:FileUpload ID="FileUpload1" runat="server" 
          title="Upload Files" />
      </ZoneTemplate>
    </aspSample:MyZone>
    <asp:WebPartZone ID="WebPartZone2" runat="server" />
    <asp:EditorZone ID="EditorZone1" runat="server">
      <ZoneTemplate>
        <asp:AppearanceEditorPart ID="AppearanceEditorPart1" runat="server" />
      </ZoneTemplate>
    </asp:EditorZone>
  </form>
</body>
</html>

Der dritte Teil des Codebeispiels ist die Quelle für die benutzerdefinierte WebPartZoneBase Zone und eine WebPartChrome Klasse. Im Konstruktor für die benutzerdefinierte Zonenklasse überprüft der Code die MyZone.RenderVerbsInMenu Eigenschaft. Wenn der Wert lautet true, werden Verben in einem Menü für jede der WebPart Steuerelemente in der Zone gerendert. Dies ist das normale Standardverhalten in den Webparts Steuerelementen festgelegt. Wenn der Eigenschaftswert ist false, der die MyZone.RenderVerbsInMenu Standardeinstellung in dieser benutzerdefinierten Zone ist, werden die Verben einzeln als Links in der Titelleiste jedes Steuerelements gerendert. Beachten Sie, dass im Webseitencode, in dem das <aspSample:MyZone> Element deklariert wird, ein RenderVerbsInMenu Attribut festgelegt trueist, damit die Verben in Menüs in den Steuerelementen angezeigt werden. Um mit diesem Feature zu experimentieren, können Sie das deklarative Attribut falseauf festlegen und beachten, wie die Verben als Links gerendert RenderVerbsInMenu werden.

Die benutzerdefinierte Klasse überschreibt das Rendering auf mehreren Methoden, und die benutzerdefinierte WebPartChrome Zone erstellt eine Instanz der Klasse in ihrer CreateWebPartChrome MyWebPartChrome Methode. Dies wendet das benutzerdefinierte Rendering auf die Seite an. Damit das Codebeispiel ausgeführt werden kann, müssen Sie diesen Quellcode kompilieren. Sie können es explizit kompilieren und die resultierende Assembly im Ordner "Bin" ihrer Website oder im globalen Assemblycache platzieren. Alternativ können Sie den Quellcode in den App_Code Ordner Ihrer Website einfügen, in dem sie zur Laufzeit dynamisch kompiliert wird. Eine exemplarische Vorgehensweise, die beide Methoden der Kompilierung veranschaulicht, finden Sie unter Walkthrough: Developing and Using a Custom Web Server Control.

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 MyZone : WebPartZone
  {
    private Boolean _renderVerbsInMenu;

    protected override WebPartChrome CreateWebPartChrome()
    {
      WebPartChrome theChrome = new MyWebPartChrome(this, 
        this.WebPartManager);
      if (RenderVerbsInMenu)
        this.WebPartVerbRenderMode = WebPartVerbRenderMode.Menu;
      else
        this.WebPartVerbRenderMode = WebPartVerbRenderMode.TitleBar;
      return theChrome;
    }

    public Boolean RenderVerbsInMenu
    {
      get { return _renderVerbsInMenu; }
      set { _renderVerbsInMenu = value; }
    }
  }

  [AspNetHostingPermission(SecurityAction.Demand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  public class MyWebPartChrome : WebPartChrome
  {
    WebPartZoneBase theZone;
    WebPartManager theManager;

    public MyWebPartChrome(WebPartZoneBase aZone, WebPartManager aManager) : 
      base(aZone, aManager)
    {
      theZone = aZone;
      theManager = aManager;
    }

    protected override WebPartVerbCollection GetWebPartVerbs(WebPart webPart)
    {
      ArrayList verbSet = new ArrayList();
      foreach (WebPartVerb verb in base.GetWebPartVerbs(webPart))
      {
        if (verb.Text != "Close")
          verbSet.Add(verb);
      }
      WebPartVerbCollection reducedVerbSet = 
        new WebPartVerbCollection(verbSet);
      return reducedVerbSet;
    }

    protected override Style CreateWebPartChromeStyle(WebPart part, 
      PartChromeType chromeType)
    {
      Style finalStyle = new Style();
      finalStyle.CopyFrom(base.CreateWebPartChromeStyle(part, chromeType));
      finalStyle.Font.Name = "Verdana";
      return finalStyle;
    }

    protected override void RenderPartContents(HtmlTextWriter writer, 
      WebPart part)
    {

        if (part == this.WebPartManager.SelectedWebPart)
          HttpContext.Current.Response.Write("<span>Not rendered</span>");
        else
          if(this.Zone.GetType() == typeof(MyZone))
            part.RenderControl(writer);
    }
  }
}
Imports System.Collections
Imports System.ComponentModel
Imports System.Drawing
Imports System.Security.Permissions
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts

Namespace Samples.AspNet.VB.Controls

  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  Public Class MyZone
    Inherits WebPartZone
    Private _renderVerbsInMenu As Boolean

    Protected Overrides Function CreateWebPartChrome() As WebPartChrome
      Dim theChrome As WebPartChrome = _
        New MyWebPartChrome(Me, Me.WebPartManager)
      If RenderVerbsInMenu Then
        Me.WebPartVerbRenderMode = WebPartVerbRenderMode.Menu
      Else
        Me.WebPartVerbRenderMode = WebPartVerbRenderMode.TitleBar
      End If
      Return theChrome
    End Function

    Public Property RenderVerbsInMenu() As Boolean
      Get
        Return _renderVerbsInMenu
      End Get
      Set(ByVal value As Boolean)
        _renderVerbsInMenu = value
      End Set
    End Property

  End Class

  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  Public Class MyWebPartChrome
    Inherits WebPartChrome
    Dim theManager As WebPartManager
    Dim theZone As WebPartZoneBase

    Public Sub New(ByVal aZone As WebPartZoneBase, _
      ByVal aManager As WebPartManager)

      MyBase.New(aZone, aManager)
      theManager = aManager
      theZone = aZone
    End Sub

    Protected Overrides Function GetWebPartVerbs _
      (ByVal webPart As WebPart) As WebPartVerbCollection

      Dim verbSet As New ArrayList()
      Dim verb As WebPartVerb
      For Each verb In MyBase.GetWebPartVerbs(webPart)
        If verb.Text <> "Close" Then
          verbSet.Add(verb)
        End If
      Next verb

      Dim reducedVerbSet As WebPartVerbCollection = _
        New WebPartVerbCollection(verbSet)

      Return reducedVerbSet
    End Function

    Protected Overrides Function CreateWebPartChromeStyle _
      (ByVal part As WebPart, ByVal chromeType As PartChromeType) As Style

      Dim finalStyle As New Style()
      finalStyle.CopyFrom(MyBase.CreateWebPartChromeStyle(Part, chromeType))
      finalStyle.Font.Name = "Verdana"
      Return finalStyle
    End Function

    Protected Overrides Sub RenderPartContents _
      (ByVal writer As HtmlTextWriter, ByVal part As WebPart)

      If part Is Me.WebPartManager.SelectedWebPart Then
        HttpContext.Current.Response.Write("<span>Not rendered</span>")
      Else
        If (Me.Zone.GetType() Is GetType(MyZone)) Then
          part.RenderControl(writer)
        End If
      End If

    End Sub

  End Class

End Namespace

Wenn Sie die Webseite in einem Browser laden, können Sie sehen, wie die verschiedenen stilistischen und anderen Renderinganpassungen im Quellcode der MyWebPartChrome Klasse in den Steuerelementen angezeigt werden, die WebPart in der Zone gerendert werden.

Hinweise

Webparts Chrome bezieht sich auf die Elemente der Peripheriebenutzerschnittstelle (UI), die jedes WebPart Steuerelement oder serversteuerelement in einer WebPartZoneBase Zone framen. Das Chrom für ein Steuerelement enthält seinen Rahmen, seine Titelleiste und die Symbole, Titeltext und Verbenmenü, die in der Titelleiste angezeigt werden. Die Darstellung des Chroms wird auf Zonenebene festgelegt und gilt für alle Serversteuerelemente in der Zone.

Der steuerelementsatz Webparts verwendet die WebPartChrome Klasse zum Rendern des Chroms für WebPart Steuerelemente. Darüber hinaus bietet diese Klasse eine Möglichkeit, um das Rendern eines einzelnen Abschnitts (z. B. kopf- oder Fußzeile) der WebPart Steuerelemente in einer WebPartZoneBase Zone anzupassen, ohne das Rendering für diese Steuerelemente behandeln zu müssen. Sie können die Methode beispielsweise außer Kraft setzen CreateWebPartChromeStyle , um bestimmte Stilattribute anzupassen, die auf die WebPartZoneBase Zone angewendet werden, aber Sie können sich auf das Standardrendering verlassen, um den Rest zu behandeln.

Die WebPartChrome Klasse enthält mehrere wichtige Methoden, die hilfreich sind, wenn Sie das Rendern von WebPart Steuerelementen außer Kraft setzen möchten. Eine ist die Methode, mit der CreateWebPartChromeStyle Sie die Formatvorlagenattribute des Objekts ändern können, das Style dem Objekt zugeordnet ist, das WebPartChrome zum Rendern eines Steuerelements verwendet wird. Eine andere ist der WebPartChrome Konstruktor, den Sie verwenden, wenn Sie die CreateWebPartChrome Methode in einer benutzerdefinierten WebPartZoneBase Klasse außer Kraft setzen, um eine Instanz Ihres benutzerdefinierten WebPartChrome Objekts zu erstellen. Eine weitere nützliche Methode ist die Methode, mit der RenderPartContents Sie das Rendern des Inhaltsbereichs von Steuerelementen in einer Zone steuern können (im Gegensatz zu Chromelementen wie Kopfzeilen, Fußzeilen und Titelleisten). Mit der GetWebPartVerbs Methode können Sie bestimmte Verben aus dem Rendern ausschließen, wenn Sie aus irgendeinem Grund nicht möchten, dass Benutzer diese Verben auf der Benutzeroberfläche sehen. Wenn Sie schließlich die programmgesteuerte Kontrolle über alle Aspekte des Renderns der WebPart Steuerelemente ausführen möchten, können Sie die RenderWebPart Methode außer Kraft setzen.

Mehrere Eigenschaften der WebPartChrome Klasse sind auch nützlich. Die Zone Eigenschaften enthalten WebPartManager Verweise auf die Zone, die dem WebPartChrome Objekt und der aktuellen WebPartManager Instanz zugeordnet ist.

Hinweise für Vererber

Erben Sie von der WebPartChrome Klasse, wenn Sie das Standardrendering bestimmter Abschnitte oder WebPart Serversteuerelemente außer Kraft setzen möchten. Sie können optional die CreateWebPartChromeStyle(WebPart, PartChromeType) Methode, die GetWebPartVerbs(WebPart) Methode und insbesondere die RenderPartContents(HtmlTextWriter, WebPart) RenderWebPart(HtmlTextWriter, WebPart) Methoden außer Kraft setzen, um das Rendering anzupassen. Um Ihre benutzerdefinierte Klasse für die Steuerelemente in einer Zone zu verwenden, entwickeln Sie eine benutzerdefinierte WebPartChrome Zone, die WebPart von der WebPartZoneBase Klasse abgeleitet ist, und überschreiben Sie die CreateWebPartChrome() Methode. Ausführliche Informationen zur Verwendung eines untergeordneten WebPartChrome Objekts in einer Zone finden Sie im Beispielabschnitt.

Konstruktoren

WebPartChrome(WebPartZoneBase, WebPartManager)

Initialisiert eine neue Instanz des Steuerelements.

Eigenschaften

DragDropEnabled

Ruft einen Wert ab, der angibt, ob Steuerelemente in eine Zone bzw. aus einer Zone gezogen werden können.

WebPartManager

Ruft einen Verweis auf die aktuelle WebPartManager-Instanz ab.

Zone

Ruft einen Verweis auf die zugeordnete WebPartZoneBase-Zone ab.

Methoden

CreateWebPartChromeStyle(WebPart, PartChromeType)

Erstellt das Stilobjekt, das die Stilattribute für jedes WebPart-Steuerelement bereitstellt, das vom WebPartChrome-Objekt gerendert wird.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
FilterWebPartVerbs(WebPartVerbCollection, WebPart)

Schließt entsprechend den vom Entwickler angegebenen Kriterien bestimmte Verben vom Rendering aus.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
GetWebPartChromeClientID(WebPart)

Ruft die Client-ID für das WebPartChrome-Objekt ab, wie es auf einer Webseite gerendert wurde.

GetWebPartTitleClientID(WebPart)

Ruft die Client-ID für die Tabellenzelle ab, die den Titel für ein WebPart-Steuerelement enthält.

GetWebPartVerbs(WebPart)

Ruft eine Auflistung von Verben ab, die mit einem WebPart-Steuerelement gerendert werden sollen.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
PerformPreRender()

Führt Aufgaben aus, die vor dem Rendern von WebPart-Steuerelementen verarbeitet werden müssen.

RenderPartContents(HtmlTextWriter, WebPart)

Gibt den Hauptinhaltsbereich eines WebPart-Steuerelements wieder und schließt Header und Footer vom Rendering aus.

RenderWebPart(HtmlTextWriter, WebPart)

Gibt ein vollständiges WebPart-Steuerelement mit allen zugehörigen Bereichen wieder.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für

Siehe auch