Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / UI / WebParts / WebPartZone.cs / 1305376 / WebPartZone.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.WebControls.WebParts {
using System;
using System.Collections;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;
///
/// Zone that hosts WebPart controls, and contains a template to specify the contained WebParts.
///
[
Designer("System.Web.UI.Design.WebControls.WebParts.WebPartZoneDesigner, " + AssemblyRef.SystemDesign),
SupportsEventValidation,
]
public class WebPartZone : WebPartZoneBase {
private ITemplate _zoneTemplate;
private bool _registrationComplete;
[
Browsable(false),
DefaultValue(null),
PersistenceMode(PersistenceMode.InnerProperty),
TemplateInstance(TemplateInstance.Single)
]
public virtual ITemplate ZoneTemplate {
get {
return _zoneTemplate;
}
set {
if (!DesignMode) {
if (_registrationComplete) {
throw new InvalidOperationException(SR.GetString(SR.WebPart_SetZoneTemplateTooLate));
}
}
_zoneTemplate = value;
}
}
private void AddWebPartToList(WebPartCollection webParts, Control control) {
WebPart part = control as WebPart;
// We used to throw an exception if the template contained a non-whitespace literal.
// However, sometimes Venus would insert
tags between the server controls
// in the template. So, we now just ignore all literals.
if ((part == null) && !(control is LiteralControl)) {
WebPartManager manager = WebPartManager;
if (manager != null) {
part = manager.CreateWebPart(control);
}
else {
part = WebPartManager.CreateWebPartStatic(control);
}
}
if (part != null) {
webParts.Add(part);
}
}
protected internal override WebPartCollection GetInitialWebParts() {
WebPartCollection webParts = new WebPartCollection();
if (ZoneTemplate != null) {
// PERF: Instantiate the template into a special control, that does nothing when a child control
// is added. This is more performant because the child control is never parented to the temporary
// control, it's ID is never generated, etc.
Control container = new NonParentingControl();
ZoneTemplate.InstantiateIn(container);
if (container.HasControls()) {
ControlCollection controls = container.Controls;
foreach (Control control in controls) {
if (control is ContentPlaceHolder) {
if (control.HasControls()) {
Control[] children = new Control[control.Controls.Count];
control.Controls.CopyTo(children, 0);
foreach (Control child in children) {
AddWebPartToList(webParts, child);
}
}
}
else {
AddWebPartToList(webParts, control);
}
}
}
}
return webParts;
}
protected internal override void OnInit(EventArgs e) {
base.OnInit(e);
_registrationComplete = true;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TextEndOfSegment.cs
- X509Certificate2Collection.cs
- IntellisenseTextBox.cs
- WebContext.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- TagNameToTypeMapper.cs
- XPathNode.cs
- SqlUDTStorage.cs
- ReservationCollection.cs
- RemotingException.cs
- DbProviderFactoriesConfigurationHandler.cs
- UserNamePasswordValidator.cs
- SiteMapDataSource.cs
- DefaultValidator.cs
- AdjustableArrowCap.cs
- BaseDataBoundControl.cs
- _HeaderInfoTable.cs
- BevelBitmapEffect.cs
- LocalizationComments.cs
- Descriptor.cs
- CaseInsensitiveOrdinalStringComparer.cs
- WsatConfiguration.cs
- NetworkInterface.cs
- Brush.cs
- RoutingUtilities.cs
- HandlerWithFactory.cs
- Rectangle.cs
- ControlUtil.cs
- StorageInfo.cs
- Root.cs
- PreservationFileReader.cs
- ConfigXmlCDataSection.cs
- DeviceSpecificChoiceCollection.cs
- SecurityPermission.cs
- FamilyMap.cs
- RequestResponse.cs
- ArraySortHelper.cs
- XmlSchemaSimpleType.cs
- validationstate.cs
- MsmqIntegrationBindingElement.cs
- WebPartEditorCancelVerb.cs
- InfoCardMasterKey.cs
- NegotiateStream.cs
- ElementsClipboardData.cs
- ButtonPopupAdapter.cs
- DocumentSequenceHighlightLayer.cs
- SqlFormatter.cs
- GlobalEventManager.cs
- FocusWithinProperty.cs
- XmlSequenceWriter.cs
- ApplicationServicesHostFactory.cs
- XmlQueryCardinality.cs
- ReaderContextStackData.cs
- DocumentViewerHelper.cs
- WindowsSysHeader.cs
- ISAPIRuntime.cs
- SimpleType.cs
- WebPartCancelEventArgs.cs
- Regex.cs
- LowerCaseStringConverter.cs
- ZoneButton.cs
- ThemeableAttribute.cs
- PostBackOptions.cs
- TypedTableHandler.cs
- SessionStateModule.cs
- ViewGenResults.cs
- SystemIPInterfaceProperties.cs
- ResXFileRef.cs
- PreProcessInputEventArgs.cs
- Blend.cs
- ExecutionContext.cs
- InkCanvas.cs
- MultiBindingExpression.cs
- SvcMapFile.cs
- PerspectiveCamera.cs
- BinarySerializer.cs
- InvalidCastException.cs
- XmlSequenceWriter.cs
- path.cs
- Transactions.cs
- DateTimeConverter2.cs
- RegistryConfigurationProvider.cs
- ServerIdentity.cs
- MeshGeometry3D.cs
- ContentPosition.cs
- InkCanvasInnerCanvas.cs
- FormsAuthenticationTicket.cs
- CacheOutputQuery.cs
- NestPullup.cs
- AcceleratedTokenProviderState.cs
- Visual3DCollection.cs
- PathNode.cs
- FixedDSBuilder.cs
- DataKeyArray.cs
- UpdateExpressionVisitor.cs
- PageEventArgs.cs
- DelegateSerializationHolder.cs
- TemplateContentLoader.cs
- StylusPointPropertyId.cs
- Highlights.cs