Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / fx / src / xsp / System / Web / UI / WebParts / WebPartZone.cs / 2 / 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.Security.Permissions;
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,
]
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
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.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CachedTypeface.cs
- TrackingProfile.cs
- TreeBuilder.cs
- EntitySqlQueryBuilder.cs
- CustomValidator.cs
- Compress.cs
- ContentElement.cs
- PropertyChangedEventArgs.cs
- PointIndependentAnimationStorage.cs
- xmlfixedPageInfo.cs
- ByteFacetDescriptionElement.cs
- Table.cs
- InstanceCreationEditor.cs
- DrawingContextDrawingContextWalker.cs
- TextTreeNode.cs
- Debug.cs
- TypefaceCollection.cs
- EventSinkHelperWriter.cs
- MobileFormsAuthentication.cs
- SupportingTokenListenerFactory.cs
- CodeTryCatchFinallyStatement.cs
- UnmanagedMarshal.cs
- QilInvoke.cs
- SortQuery.cs
- SqlClientWrapperSmiStream.cs
- NamespaceList.cs
- UserControlCodeDomTreeGenerator.cs
- TempFiles.cs
- XpsPartBase.cs
- FullTextState.cs
- BaseCodeDomTreeGenerator.cs
- SessionParameter.cs
- ISFTagAndGuidCache.cs
- VersionPair.cs
- RoleManagerModule.cs
- MimeFormatter.cs
- SizeAnimation.cs
- InvalidFilterCriteriaException.cs
- coordinatorfactory.cs
- AnnotationHelper.cs
- FlowDocumentReaderAutomationPeer.cs
- UseAttributeSetsAction.cs
- ParameterToken.cs
- EntityViewGenerator.cs
- BoundField.cs
- precedingsibling.cs
- ScriptHandlerFactory.cs
- DataGridViewDataErrorEventArgs.cs
- ConversionHelper.cs
- ResourceDisplayNameAttribute.cs
- ConfigPathUtility.cs
- CodePageUtils.cs
- TypeElement.cs
- DateTimeConstantAttribute.cs
- SecUtil.cs
- Subtree.cs
- PageEventArgs.cs
- ImmComposition.cs
- DataListCommandEventArgs.cs
- ObjectManager.cs
- MimeTypeMapper.cs
- TcpClientSocketManager.cs
- RectangleGeometry.cs
- GroupBoxAutomationPeer.cs
- WebPartVerbCollection.cs
- DateTimeFormat.cs
- BitFlagsGenerator.cs
- TextDecorations.cs
- ArgumentNullException.cs
- XamlVector3DCollectionSerializer.cs
- BlockingCollection.cs
- DataMemberConverter.cs
- AttributeCollection.cs
- ToolStripGrip.cs
- MarkedHighlightComponent.cs
- SrgsNameValueTag.cs
- FixedTextBuilder.cs
- XmlDocumentType.cs
- WebUtil.cs
- TextServicesDisplayAttribute.cs
- ChoiceConverter.cs
- SchemaNames.cs
- GridViewCommandEventArgs.cs
- BinaryObjectWriter.cs
- MenuItemStyleCollection.cs
- AccessDataSource.cs
- X509SecurityTokenAuthenticator.cs
- OptimizedTemplateContentHelper.cs
- CompilationUnit.cs
- TransformerTypeCollection.cs
- OdbcEnvironment.cs
- SqlProviderServices.cs
- DataGridCellsPresenter.cs
- BaseParser.cs
- ColorIndependentAnimationStorage.cs
- XmlSchemaExternal.cs
- DbSource.cs
- ExpressionDumper.cs
- ClientType.cs
- XComponentModel.cs