WebPartChrome Klasse

Definition

Ermöglicht Es Entwicklern, das Rendering nur für die ausgewählten Abschnitte oder WebPart Serversteuerelemente in einer WebPartZoneBase Zone außer Kraft zu setzen.

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 enthält vier Teile:

  • 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 Webpart-Seitenthema und Platzieren der Datei im selben Ordner wie die .aspx Seite in diesem Codebeispiel.

Der zweite Teil des Beispiels ist die Webseite. Beachten Sie, dass sich oben in der Datei eine Register Direktive befindet, 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 zwar nicht tatsächlich WebPart-Steuerelemente sind, jedoch automatisch (durch ASP.NET) mit einem GenericWebPart-Objekt zur Laufzeit eingeschlossen werden, sodass sie dieselbe Funktionalität wie WebPart-Steuerelemente aufweisen.

<%@ 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 jedes der WebPart Steuerelemente in der Zone gerendert. Dies ist das normale Standardverhalten in den Webpart-Steuerelementen, die festgelegt sind. Wenn der MyZone.RenderVerbsInMenu Eigenschaftswert ist , der der Standardwert in dieser benutzerdefinierten Zone ist false, werden die Verben einzeln als Verknüpfungen 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 RenderVerbsInMenu Attribut auf falsefestlegen und beachten, wie die Verben als Links gerendert werden.

Die benutzerdefinierte WebPartChrome Klasse setzt das Rendering auf mehreren Methoden außer Kraft, 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 App_Code Ordner Ihrer Website ablegen, in dem er 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, die im Quellcode der MyWebPartChrome Klasse vorgenommen wurden, in den Steuerelementen angezeigt werden, die WebPart in der Zone gerendert werden.

Hinweise

Webpart-Chrom bezieht sich auf die Ui-Elemente (Peripheriebenutzeroberflächen), die jedes Steuerelement oder Serversteuerelement in einer WebPartZoneBase Zone framenWebPart. 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 Webpart-Steuerelementsatz verwendet die WebPartChrome Klasse zum Rendern des Chroms für WebPart Steuerelemente. Darüber hinaus bietet diese Klasse Entwicklern die Möglichkeit, das Rendern einzelner Abschnitte (z. B. kopf- oder fußzeilen) der WebPart Steuerelemente in einer WebPartZoneBase Zone anzupassen, ohne das rendering für diese Steuerelemente verarbeiten zu müssen. Sie können die Methode beispielsweise überschreiben CreateWebPartChromeStyle , um bestimmte Formatattribute anzupassen, die auf die WebPartZoneBase Zone angewendet wurden, aber Sie können sich auf das Standardrendering verlassen, um den Rest zu behandeln.

Die WebPartChrome Klasse enthält mehrere wichtige Methoden, die nützlich sind, wenn Sie das Rendern von WebPart Steuerelementen überschreiben möchten. Eine ist die CreateWebPartChromeStyle Methode, mit der Sie die Formatvorlagenattribute des Style Objekts ändern können, das dem Objekt zugeordnet ist, das WebPartChrome zum Rendern eines Steuerelements verwendet wird. Ein anderer ist der WebPartChrome Konstruktor, den Sie verwenden, wenn Sie die CreateWebPartChrome Methode in einer benutzerdefinierten Klasse überschreiben, um eine Instanz Ihres benutzerdefinierten WebPartZoneBaseWebPartChrome 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 Chromeelementen wie Kopfzeilen, Fußzeilen und Titelleisten). Mit der GetWebPartVerbs Methode können Sie bestimmte Verben davon ausschließen, dass sie gerendert werden, wenn Sie aus irgendeinem Grund nicht möchten, dass Benutzer diese Verben in der Benutzeroberfläche sehen. Wenn Sie schließlich die 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 enthalten WebPartManager Verweise auf die Zone, die dem WebPartChrome Objekt zugeordnet ist, bzw. die aktuelle WebPartManager Instanz.

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 überschreiben, um das Rendering anzupassen. Um Ihre benutzerdefinierte Klasse für die WebPart Steuerelemente in einer Zone zu verwenden, entwickeln Sie eine benutzerdefinierte WebPartChrome Zone, die von der WebPartZoneBase Klasse abgeleitet ist, und überschreiben Sie ihre CreateWebPartChrome() Methode. Ausführliche Informationen zur Verwendung eines untergeordneten WebPartChrome Objekts in einer Zone finden Sie im Abschnitt "Beispiel".

Konstruktoren

Name Beschreibung
WebPartChrome(WebPartZoneBase, WebPartManager)

Initialisiert eine neue Instanz des Steuerelements.

Eigenschaften

Name Beschreibung
DragDropEnabled

Ruft einen Wert ab, der angibt, ob Steuerelemente in und aus der 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

Name Beschreibung
CreateWebPartChromeStyle(WebPart, PartChromeType)

Erstellt das Formatvorlagenobjekt, das Formatattribute für jedes WebPart vom WebPartChrome Objekt gerenderte Steuerelement bereitstellt.

Equals(Object)

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

(Geerbt von Object)
FilterWebPartVerbs(WebPartVerbCollection, WebPart)

Schließt bestimmte Verben aus, die basierend auf den von einem Entwickler bereitgestellten Kriterien gerendert werden.

GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
GetWebPartChromeClientID(WebPart)

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

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 der aktuellen Object.

(Geerbt von Object)
PerformPreRender()

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

RenderPartContents(HtmlTextWriter, WebPart)

Rendert den Hauptinhaltsbereich eines WebPart Steuerelements, mit Ausnahme der Kopf- und Fußzeile.

RenderWebPart(HtmlTextWriter, WebPart)

Rendert ein vollständiges WebPart Steuerelement mit allen zugehörigen Abschnitten.

ToString()

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

(Geerbt von Object)

Gilt für:

Weitere Informationen