1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
|
//------------------------------------------------------------------------------
// <copyright file="ProxyWebPart.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
namespace System.Web.UI.WebControls.WebParts {
using System;
using System.Collections;
using System.ComponentModel;
using System.Globalization;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Util;
[
ToolboxItem(false)
]
public abstract class ProxyWebPart : WebPart {
private string _originalID;
private string _originalTypeName;
private string _originalPath;
private string _genericWebPartID;
protected ProxyWebPart(WebPart webPart) {
if (webPart == null) {
throw new ArgumentNullException("webPart");
}
GenericWebPart genericWebPart = webPart as GenericWebPart;
if (genericWebPart != null) {
Control childControl = genericWebPart.ChildControl;
if (childControl == null) {
throw new ArgumentException(SR.GetString(SR.PropertyCannotBeNull, "ChildControl"), "webPart");
}
_originalID = childControl.ID;
if (String.IsNullOrEmpty(_originalID)) {
throw new ArgumentException(SR.GetString(SR.PropertyCannotBeNullOrEmptyString, "ChildControl.ID"), "webPart");
}
Type originalType;
UserControl childUserControl = childControl as UserControl;
if (childUserControl != null) {
originalType = typeof(UserControl);
_originalPath = childUserControl.AppRelativeVirtualPath;
}
else {
originalType = childControl.GetType();
}
_originalTypeName = WebPartUtil.SerializeType(originalType);
_genericWebPartID = genericWebPart.ID;
if (String.IsNullOrEmpty(_genericWebPartID)) {
throw new ArgumentException(SR.GetString(SR.PropertyCannotBeNullOrEmptyString, "ID"), "webPart");
}
ID = _genericWebPartID;
}
else {
_originalID = webPart.ID;
if (String.IsNullOrEmpty(_originalID)) {
throw new ArgumentException(SR.GetString(SR.PropertyCannotBeNullOrEmptyString, "ID"), "webPart");
}
_originalTypeName = WebPartUtil.SerializeType(webPart.GetType());
ID = _originalID;
}
}
protected ProxyWebPart(string originalID, string originalTypeName, string originalPath, string genericWebPartID) {
if (String.IsNullOrEmpty(originalID)) {
throw ExceptionUtil.ParameterNullOrEmpty("originalID");
}
if (String.IsNullOrEmpty(originalTypeName)) {
throw ExceptionUtil.ParameterNullOrEmpty("originalTypeName");
}
// If you specify a path, this must be a GenericWebPart so genericWebPartID should not be null
if (!String.IsNullOrEmpty(originalPath) && String.IsNullOrEmpty(genericWebPartID)) {
throw ExceptionUtil.ParameterNullOrEmpty("genericWebPartID");
}
_originalID = originalID;
_originalTypeName = originalTypeName;
_originalPath = originalPath;
_genericWebPartID = genericWebPartID;
if (!String.IsNullOrEmpty(genericWebPartID)) {
ID = _genericWebPartID;
}
else {
ID = _originalID;
}
}
public string GenericWebPartID {
get {
return (_genericWebPartID != null) ? _genericWebPartID : String.Empty;
}
}
// Seal the ID property so we can set it in the constructor without an FxCop violation.
public sealed override string ID {
get {
return base.ID;
}
set {
base.ID = value;
}
}
public string OriginalID {
get {
return (_originalID != null) ? _originalID : String.Empty;
}
}
public string OriginalTypeName {
get {
return (_originalTypeName != null) ? _originalTypeName : String.Empty;
}
}
public string OriginalPath {
get {
return (_originalPath != null) ? _originalPath : String.Empty;
}
}
// Accept any ControlState, but do nothing with it, since it is actually the ControlState
// for the WebPart we are replacing.
protected internal override void LoadControlState(object savedState) {
}
// Accept any ViewState, but do nothing with it, since it is actually the ViewState
// for the WebPart we are replacing.
protected override void LoadViewState(object savedState) {
}
// Do not save any ControlState, since the ProxyWebPart itself does not need to save state
// between requests.
protected internal override object SaveControlState() {
// Call base in case it has some side-effects that the control relies on
base.SaveControlState();
return null;
}
// Do not save any ViewState, since the ProxyWebPart itself does not need to save state
// between requests.
protected override object SaveViewState() {
// Call base in case it has some side-effects that the control relies on
base.SaveViewState();
return null;
}
}
}
|