Freigeben über


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 verwendet wird, um das Standardrendering von WebPart Steuerelementen in einer WebPartZoneBase Zone zu überschreiben.

Das Codebeispiel umfasst vier Teile:

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

  • Eine Webseite, die alle Steuerelemente im Beispiel hostet.

  • 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 dem Thema Exemplarische Vorgehensweise: Ändern von Anzeigemodi auf einer Webpartseite abrufen und die Datei im gleichen Ordner wie die .aspx-Seite in diesem Codebeispiel ablegen.

Der zweite Teil des Beispiels ist die Webseite. Beachten Sie, dass am Anfang der Datei eine Register -Direktive zum Registrieren der kompilierten Komponente und eines Tagpräfixes vorhanden ist. Beachten Sie auch, 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, zur Laufzeit automatisch (von ASP.NET) mit einem GenericWebPart -Objekt umschlossen werden, sodass sie über die gleiche Funktionalität wie WebPart Steuerelemente verfügen.

<%@ 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 ist true, werden Verben in einem Menü für jedes Steuerelement WebPart in der Zone gerendert. Dies ist das normale Standardverhalten in den Webparts-Steuerelementen. Wenn der MyZone.RenderVerbsInMenu -Eigenschaftswert ist false, was der Standard 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 auf truefestgelegt ist, sodass die Verben in Menüs der Steuerelemente angezeigt werden. Um mit diesem Feature zu experimentieren, können Sie das deklarative RenderVerbsInMenu Attribut auf falsefestlegen und beachten, wie die Verben als Links gerendert werden.

Die benutzerdefinierte WebPartChrome Klasse überschreibt das Rendering für mehrere Methoden, und die benutzerdefinierte Zone erstellt eine Instanz der -Klasse in ihrer MyWebPartChromeCreateWebPartChrome -Methode. Dadurch wird das benutzerdefinierte Rendering auf die Seite angewendet. Damit das Codebeispiel ausgeführt werden kann, müssen Sie diesen Quellcode kompilieren. Sie können sie explizit kompilieren und die resultierende Assembly im Ordner Bin ihrer Website oder im globalen Assemblycache ablegen. Alternativ können Sie den Quellcode im Ordner App_Code Ihrer Website ablegen, wo er zur Laufzeit dynamisch kompiliert wird. Eine exemplarische Vorgehensweise, die beide Kompilierungsmethoden veranschaulicht, finden Sie unter Exemplarische Vorgehensweise: Entwickeln und Verwenden eines benutzerdefinierten Webserversteuerelements.

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, die im Quellcode der MyWebPartChrome -Klasse vorgenommen wurden, in den in der WebPart Zone gerenderten Steuerelementen angezeigt werden.

Hinweise

Webparts chrome bezieht sich auf die Elemente der Peripherie-Benutzeroberfläche (UI), die jedes WebPart Steuerelement oder Serversteuerelement in einer WebPartZoneBase Zone umrahmen. Der Chrom für ein Steuerelement enthält den Rahmen, die Titelleiste sowie die Symbole, den Titeltext und das 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 Webparts-Steuerelementsatz verwendet die WebPartChrome -Klasse, um den Chrom für WebPart Steuerelemente zu rendern. Darüber hinaus bietet diese Klasse eine Möglichkeit für Entwickler, das Rendern einzelner Abschnitte (z. B. kopf- oder fußzeilen) der WebPart Steuerelemente in einer WebPartZoneBase Zone anzupassen, ohne das gesamte Rendering für diese Steuerelemente verarbeiten zu müssen. Beispielsweise können Sie die CreateWebPartChromeStyle -Methode überschreiben, um bestimmte Stilattribute anzupassen, die auf die WebPartZoneBase Zone angewendet werden, aber Sie können sich auf das Standardrendering verlassen, um den Rest zu verarbeiten.

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

Mehrere Eigenschaften der WebPartChrome -Klasse sind ebenfalls nützlich. Die Zone Eigenschaften und WebPartManager stellen Verweise auf die Zone bereit, die dem WebPartChrome Objekt bzw. der aktuellen WebPartManager Instanz zugeordnet ist.

Hinweise für Vererber

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

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:

Weitere Informationen