Export (0) Print
Expand All
0 out of 193 rated this helpful - Rate this topic

WebZone Class

Serves as the base class for all controls that act as containers for server controls (including Web Parts Part controls, server controls, and user controls) in Web Parts applications.

Namespace:  System.Web.UI.WebControls.WebParts
Assembly:  System.Web (in System.Web.dll)
[BindableAttribute(false)]
[AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
public abstract class WebZone : CompositeControl
<asp:WebZone />

A Web Parts zone is a defined region that contains server controls on a Web page, and provides a consistent user interface (UI), layout, and rendering for the contained controls. Zones are rendered in a browser as HTML tables.

The WebZone class is the base class for all Web Parts zones. A zone control is a composite control designed to contain other controls, hence the WebZone class inherits from the CompositeControl class. Together with the WebPartManager control and Part controls (or other user or server controls that can be placed in zones), zone controls derived from the WebZone base class form the essential building blocks of a Web Parts application.

A critical role of Web Parts zones is to enable full Web Parts functionality for the controls they contain. Every Web Parts page contains at least one zone, and a zone can contain zero or more part controls. Zones are required for Web Parts functionality. Without zones, even controls that derive from the WebPart class can have very little Web Parts functionality. Conversely, because of the design of the Web Parts control set, you can place ordinary ASP.NET controls, server controls, or user controls into a WebPartZoneBase zone (which derives from WebZone), and by virtue of being in the zone, these ordinary server controls are enable to act as WebPart controls at run time. For details, see the documentation for the GenericWebPart class.

NoteNote:

It is possible to add Part or WebPart controls to a page outside of a zone, but in that case they simply function as ordinary server controls.

There are two broad categories of zones in the Web Parts control set, all of which inherit from the base WebZone class.

  • WebPartZoneBase zones. These contain WebPart (and other server and user) controls, and form the primary UI of Web Parts pages that users interact with most of the time.

  • ToolZone zones. These zones provide special views of a Web Parts page that enable users to modify (personalize) the content, layout, appearance, behavior, and properties of controls contained in WebPartZoneBase zones on a Web Parts page. For example, a CatalogZoneBase zone is a ToolZone that provides a catalog view of a page, enabling users to add and remove server controls. An EditorZoneBase zone is another type of ToolZone that provides an editing view of a page, enabling users to modify and edit the layout of the page, along with the properties, appearance, and behavior of the controls.

Each zone in the Web Parts control set is designed to contain a corresponding type of control derived from the Part class, with the part controls serving as the main content and primary UI of the zone. Zone types in the Web Parts control set, along with the corresponding types of part controls they contain, are shown in the following table.

Part control type

Zone type

WebPart (and server and user controls, which are wrapped with a GenericWebPart at run time)

WebPartZone (the base class is WebPartZoneBase )

EditorPart (several derived controls are provided with the Web Parts control set, and custom EditorPart controls can be developed)

EditorZone (the base class is EditorZoneBase )

CatalogPart (several derived controls are provided with the Web Parts control set, and custom CatalogPart controls can be developed)

CatalogZone (the base class is CatalogZoneBase )

WebPartConnection (connection controls are unique in that they are not part controls that inherit from the base class)

ConnectionsZone (inherits directly from ToolZone )

All zones in the Web Parts control have basic, common user interface elements that they inherit from the base WebZone class. Not all these elements are visible on every zone, but each zone type is capable of having these common, zone-related UI elements, as described in the following table.

Zone section

Description

Header

The top section of a zone. It includes header text, which can include a title for the zone; style attributes (such as a border or background color) that distinguish the header; and zone-level verbs (represented by buttons, hyperlinks, or images) that users can click to perform UI actions that apply to the entire zone, such as closing a zone. Several WebZone properties, such as HasHeader, HeaderStyle, and HeaderText, relate to the header area of a zone. If there are zone-level verbs in the zone, the VerbButtonType and VerbStyle properties apply to them. Note that these two verb properties apply to zone-level verbs only, not to verbs in the individual part controls contained in the zone. Headers are not present in every type of zone; typically they appear in ToolZone zones where there is a need to have a common header area with text and a verb, such as a close verb.

Body

The main contents section of a zone. Every zone that derives from WebZone has a body section. For all types of zones in the Web Parts control set, the body of the zone contains the designated type of Part controls (or other server controls) that correspond to a zone type, as indicated in the previous table. Various members of the WebZone class affect the contents of the body section, such as the BackImageUrl, PartChromeStyle, PartChromeType, and PartStyle properties. If the body section is empty, the EmptyZoneText message can be displayed in certain situations.

Chrome

The common UI elements rendered for each part control in a zone. This is distinct from a discussion of style attributes that apply to the zone itself; chrome applies specifically to the contained part controls. Chrome includes verbs, borders, and other style attributes such as background color, or font style of the title text, for a zone's part controls. A zone determines the chrome details by using a single chrome object appropriate to the type of part controls it contains (e.g., a CatalogPartChrome object for a CatalogZone that contains CatalogPart controls). This single chrome object handles the chrome details and the rendering for all the part controls in the zone. This enables developers to create zones in which they can specify a consistent, common look and feel for all the part controls. Some properties that relate to the chrome for a zone's part controls include the PartChromeStyle, PartChromeType, PartStyle, and PartTitleStyle properties. Note that most chrome-related properties, including a specific property to reference the chrome object for a particular type of zone, are not implemented in the base WebZone class. Instead, most chrome-specific features of zones are implemented on specific zone types as appropriate to the unique needs of their part controls. See the topics for each zone type listed in the previous table of this topic.

Part Controls

The controls that reside in the body section of a zone. Every zone that inherits from the WebZone class contains in its body section one or more part controls of a corresponding type, as shown in the previous table in this topic. These part controls form the main UI of Web Parts applications. Most zone types that derive from WebZone have a collection property that enables them to reference all their contained part controls, such as the WebParts property on the WebPartZoneBase class, and the EditorParts property on the EditorZoneBase class.

Footer

The bottom section of a zone. Like the header section, it is not present in every type of zone, but usually occurs in ToolZone zones. Typical contents of a footer section are verbs such as an ok verb or an apply verb, which appear in the footer of EditorZoneBase zones. Some properties that relate to the footer section include the HasFooter, FooterStyle, VerbButtonType, and VerbStyle properties.

Most of the WebZone class's properties are discussed in the preceding table that describes the common UI elements of zones. The WebZone class also has several methods relating to its role of rendering content. The RenderBody, RenderContents, RenderFooter, and RenderHeader methods can all be overridden to provide programmatic control over the rendering of each specific section of a zone. For example, if you want to customize the rendering of all the footer sections of catalog zones in your application, you could inherit from the CatalogZoneBase class, override the RenderFooter method inherited from WebZone, and change the rendering of the footer section.

Notes to Inheritors:

You rarely need to inherit directly from the WebZone class to develop custom Web Parts zones. The Web Parts control set contains the specialized zones listed above in the Remarks section, and usually you can derive from one of them to add custom behavior to a zone. If you do decide to inherit directly from the WebZone class, you must override a number of properties and methods (see the documentation for the members of the WebZone class). You must also create a custom WebPartManager control, optionally a custom WebPartDisplayMode control to create a unique display mode in which to view your zone, and other customizations to make your zone work within the Web Parts control set.

The following code example demonstrates the use of the WebZone class.

The first part of the code example shows two custom controls that derive from the WebPart class. For the code example to run, you must compile this source code. You can compile it explicitly and put the resulting assembly in your Web site's Bin folder or the global assembly cache. Alternatively, you can put the source code in your site's App_Code folder, where it will be dynamically compiled at run time. For a walkthrough that demonstrates both methods of compiling, see Walkthrough: Developing and Using a Custom Web Server Control.

using System;
using System.Security.Permissions;
using System.Web;
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 CalendarWebPart : WebPart
  {
    Calendar _calendar;

    public CalendarWebPart()
    {
      this.AllowClose = false;
    }

    protected override void CreateChildControls()
    {
      Controls.Clear();
      _calendar = new Calendar();
      _calendar.Caption = "My Calendar";
      this.Controls.Add(_calendar);
      ChildControlsCreated = true;
    }
  }

  [AspNetHostingPermission(SecurityAction.Demand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  public class LinksWebPart : WebPart
  {
    Literal _literal;
    const string _literalText = @"
      <table>
      <tr>
        <td><a href='http://msdn.microsoft.com'>MSDN</a></td>
      </tr>
      <tr>
        <td><a href='http://msn.microsoft.com'>MSN</a></td>
      </tr>
      <tr>
        <td><a href='http://www.msnbc.msn.com'>MSNBC</a></td>
      </tr>
      </table>";

    public LinksWebPart()
    {
      this.AllowClose = false;
    }

    protected override void CreateChildControls()
    {
      Controls.Clear();

      _literal = new Literal();
      _literal.Text = _literalText;
      this.Controls.Add(_literal);

      ChildControlsCreated = true;
    }
  }
}

The second part of the code example shows a Web page that hosts the WebPart controls. Notice that the declarative markup contains two WebPartZone controls, a CatalogZone control and an EditorZone control.

<%@ page language="C#" %>
<%@ register TagPrefix="uc1" 
  TagName="DisplayModeMenuCS" 
  Src="DisplayModeMenuCS.ascx" %>
<%@ register tagprefix="aspSample" 
  Namespace="Samples.AspNet.CS.Controls" 
  Assembly="ZoneWebPartsCS"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
  <form id="Form1" runat="server">
    <asp:webpartmanager id="WebPartManager1" runat="server" />
    <uc1:DisplayModeMenuCS ID="DisplayModeMenu1" runat="server" />
    <asp:webpartzone
      id="WebPartZone1"
      runat="server"
      title="Zone 1"
      PartChromeType="TitleAndBorder">
        <parttitlestyle font-bold="true" ForeColor="#3300cc"/>
        <partstyle
          borderwidth="1px"   
          borderstyle="Solid"  
          bordercolor="#81AAF2" />
        <ZoneTemplate>
          <aspSample:CalendarWebPart 
            runat="server"   
            id="CalendarWebPart1" 
            Title="Calendar WebPart"
            />         
        </ZoneTemplate>
    </asp:webpartzone>
    <asp:webpartzone
      id="WebPartZone2"
      runat="server"
      title="Zone 2"
      PartChromeType="TitleAndBorder"
      EmptyZoneText="Empty Zone">
        <parttitlestyle font-bold="true" ForeColor="#3300cc"/>
        <partstyle
          borderwidth="1px"   
          borderstyle="Solid"  
          bordercolor="#81AAF2" />
    </asp:webpartzone>
    <asp:EditorZone ID="editzone1" Runat="server">
      <ZoneTemplate>
        <asp:AppearanceEditorPart 
          ID="appearanceeditor1" 
          Runat="server" />
        <asp:LayoutEditorPart 
          ID="LayoutEditorPart1" 
          Runat="server" />
      </ZoneTemplate>
    </asp:EditorZone>
    <asp:CatalogZone ID="catalogzone1" Runat="server" >
      <ZoneTemplate>
        <asp:DeclarativeCatalogPart 
          ID="declarativepart1" 
          Runat="server">
          <WebPartsTemplate>
          <aspSample:LinksWebPart 
            runat="server"   
            id="linkswebpart" 
            Title="Favorite Links"
            />  
          </WebPartsTemplate>
        </asp:DeclarativeCatalogPart>
      </ZoneTemplate>
    </asp:CatalogZone>
    <br />
  </form>
</body>
</html>

You can load the page in a browser and switch among the various page display modes to see how the different zones behave. For more information on display modes and enabling users to switch among them, see Walkthrough: Changing Display Modes on a Web Parts Page.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

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

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0
Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

ADD
Show:
© 2014 Microsoft. All rights reserved.