Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / xsp / System / Web / UI / PageAdapter.cs / 1 / PageAdapter.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.Adapters {
using System;
using System.Collections;
using System.Collections.Specialized;
using System.Globalization;
using System.IO;
using System.Security.Permissions;
using System.Web.UI.WebControls;
using System.Web.Util;
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public abstract class PageAdapter : ControlAdapter {
private IDictionary _radioButtonGroups = null;
public virtual StringCollection CacheVaryByHeaders {
get {
return null;
}
}
public virtual StringCollection CacheVaryByParams {
get {
return null;
}
}
///
/// Exposes the page ClientState string to the adapters
///
protected string ClientState {
get {
if (Page != null) {
return Page.ClientState;
}
return null;
}
}
///
/// The id separator used for control UniqueID/ClientID.
///
internal virtual char IdSeparator {
get {
return Control.ID_SEPARATOR;
}
}
internal String QueryString {
get {
string queryString = Page.ClientQueryString;
if (Page.Request.Browser.RequiresUniqueFilePathSuffix) {
if (!String.IsNullOrEmpty(queryString)) {
queryString = String.Concat(queryString, "&");
}
queryString = String.Concat(queryString, Page.UniqueFilePathSuffix);
}
return queryString;
}
}
///
/// [To be supplied.]
///
public virtual NameValueCollection DeterminePostBackMode() {
Debug.Assert(Control != null);
if(Control != null) {
return Control.Page.DeterminePostBackMode();
}
return null;
}
///
/// [To be supplied.]
///
public virtual ICollection GetRadioButtonsByGroup(string groupName) {
if (_radioButtonGroups == null) {
return null;
}
return (ICollection)_radioButtonGroups[groupName];
}
protected internal virtual string GetPostBackFormReference(string formId) {
return "document.forms['" + formId + "']";
}
public virtual PageStatePersister GetStatePersister() {
return new HiddenFieldPageStatePersister(Page);
}
///
/// [To be supplied.]
///
public virtual void RegisterRadioButton(RadioButton radioButton) {
string groupName = radioButton.GroupName;
if (String.IsNullOrEmpty(groupName))
return;
ArrayList group = null;
if (_radioButtonGroups == null) {
_radioButtonGroups = new ListDictionary();
}
if (_radioButtonGroups.Contains(groupName)) {
group = (RadioButtonGroupList) _radioButtonGroups[groupName];
}
else {
group = new RadioButtonGroupList();
_radioButtonGroups[groupName] = group;
}
group.Add(radioButton);
}
///
/// [To be supplied.]
///
public virtual void RenderBeginHyperlink(HtmlTextWriter writer, string targetUrl, bool encodeUrl, string softkeyLabel) {
RenderBeginHyperlink(writer, targetUrl, encodeUrl, softkeyLabel, null /* accessKey */);
}
///
/// [To be supplied.]
///
public virtual void RenderBeginHyperlink(HtmlTextWriter writer, string targetUrl, bool encodeUrl, string softkeyLabel, string accessKey) {
String url;
// Valid values are null, String.Empty, and single character strings
if ((accessKey != null) && (accessKey.Length > 1)) {
throw new ArgumentOutOfRangeException("accessKey");
}
if (encodeUrl) {
url = HttpUtility.HtmlAttributeEncode(targetUrl);
}
else {
url = targetUrl;
}
writer.AddAttribute("href", url);
if (!String.IsNullOrEmpty(accessKey)) {
writer.AddAttribute("accessKey", accessKey);
}
writer.RenderBeginTag("a");
}
///
/// [To be supplied.]
///
public virtual void RenderEndHyperlink(HtmlTextWriter writer) {
writer.WriteEndTag("a");
}
public virtual void RenderPostBackEvent(HtmlTextWriter writer, string target, string argument, string softkeyLabel, string text) {
RenderPostBackEvent(writer, target, argument, softkeyLabel, text, null /*postUrl */, null /* accesskey */);
}
///
/// Renders a client widget corresponding to a postback event, for example a wml do or a post link. Note that this
/// widget may not submit the form data, e.g. scriptless html where this renders a link.
///
public virtual void RenderPostBackEvent(HtmlTextWriter writer, string target, string argument, string softkeyLabel, string text, string postUrl, string accessKey) {
RenderPostBackEvent(writer, target, argument, softkeyLabel, text, postUrl, accessKey, false /* encode */);
}
///
/// Renders a client widget corresponding to a postback event, for example a wml do or a post link. Note that this
/// widget may not submit the form data, e.g. scriptless html where this renders a link.
///
protected void RenderPostBackEvent(HtmlTextWriter writer, string target, string argument, string softkeyLabel, string text, string postUrl, string accessKey, bool encode) {
// Default: render postback event as scriptless anchor (works for all markups). Override for specific markups.
string amp = encode ? "&" : "&";
bool isCrossPagePostBack = !String.IsNullOrEmpty(postUrl);
writer.WriteBeginTag("a");
writer.Write(" href=\"");
string url = null;
if (!isCrossPagePostBack) {
if ((String)Browser["requiresAbsolutePostbackUrl"] == "true") {
url = Page.Response.ApplyAppPathModifier(Page.Request.CurrentExecutionFilePath);
}
else {
url = Page.RelativeFilePath;
}
}
else {
url = postUrl;
Page.ContainsCrossPagePost = true;
}
writer.WriteEncodedUrl(url);
writer.Write("?");
string clientState = ClientState;
if (clientState != null)
{
ICollection chunks = Page.DecomposeViewStateIntoChunks();
// Default chunk count is 1
if (chunks.Count > 1) {
writer.Write(Page.ViewStateFieldCountID + "=" + chunks.Count + amp);
}
int count = 0;
foreach (String state in chunks) {
writer.Write(Page.ViewStateFieldPrefixID);
if (count > 0) writer.Write(count.ToString(CultureInfo.CurrentCulture));
writer.Write("=" + HttpUtility.UrlEncode(state));
writer.Write(amp);
++count;
}
}
if (isCrossPagePostBack) {
writer.Write(Page.previousPageID);
writer.Write("=" + Page.EncryptString(Page.Request.CurrentExecutionFilePath));
writer.Write(amp);
}
writer.Write("__EVENTTARGET=" + HttpUtility.UrlEncode(target));
writer.Write(amp);
writer.Write("__EVENTARGUMENT=" + HttpUtility.UrlEncode(argument));
//
string queryStringText = QueryString;
if (!String.IsNullOrEmpty(queryStringText)) {
writer.Write(amp);
writer.Write(queryStringText);
}
writer.Write("\"");
if (!String.IsNullOrEmpty(accessKey)) {
writer.WriteAttribute("accessKey", accessKey);
}
writer.Write(">");
writer.Write(text);
writer.WriteEndTag("a");
}
///
/// Transforms text for the target device. The default transformation is the identity transformation,
/// which does not change the text.
///
public virtual string TransformText(string text) {
return text;
}
}
internal class RadioButtonGroupList : ArrayList {
#if SHIPPINGADAPTERS
private bool _autoPostBackRadioButtonsChecked;
private bool _containsAutoPostBackRadioButtons;
internal bool ContainsAutoPostBackRadioButtons {
get {
if (_autoPostBackRadioButtonsChecked)
return _containsAutoPostBackRadioButtons;
for (IEnumerator e = this.GetEnumerator(); e.MoveNext();) {
RadioButton radioButton = (RadioButton)e.Current;
if (radioButton.AutoPostBack) {
_containsAutoPostBackRadioButtons = true;
break;
}
}
_autoPostBackRadioButtonsChecked = true;
return _containsAutoPostBackRadioButtons;
}
}
#endif
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.Adapters {
using System;
using System.Collections;
using System.Collections.Specialized;
using System.Globalization;
using System.IO;
using System.Security.Permissions;
using System.Web.UI.WebControls;
using System.Web.Util;
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public abstract class PageAdapter : ControlAdapter {
private IDictionary _radioButtonGroups = null;
public virtual StringCollection CacheVaryByHeaders {
get {
return null;
}
}
public virtual StringCollection CacheVaryByParams {
get {
return null;
}
}
///
/// Exposes the page ClientState string to the adapters
///
protected string ClientState {
get {
if (Page != null) {
return Page.ClientState;
}
return null;
}
}
///
/// The id separator used for control UniqueID/ClientID.
///
internal virtual char IdSeparator {
get {
return Control.ID_SEPARATOR;
}
}
internal String QueryString {
get {
string queryString = Page.ClientQueryString;
if (Page.Request.Browser.RequiresUniqueFilePathSuffix) {
if (!String.IsNullOrEmpty(queryString)) {
queryString = String.Concat(queryString, "&");
}
queryString = String.Concat(queryString, Page.UniqueFilePathSuffix);
}
return queryString;
}
}
///
/// [To be supplied.]
///
public virtual NameValueCollection DeterminePostBackMode() {
Debug.Assert(Control != null);
if(Control != null) {
return Control.Page.DeterminePostBackMode();
}
return null;
}
///
/// [To be supplied.]
///
public virtual ICollection GetRadioButtonsByGroup(string groupName) {
if (_radioButtonGroups == null) {
return null;
}
return (ICollection)_radioButtonGroups[groupName];
}
protected internal virtual string GetPostBackFormReference(string formId) {
return "document.forms['" + formId + "']";
}
public virtual PageStatePersister GetStatePersister() {
return new HiddenFieldPageStatePersister(Page);
}
///
/// [To be supplied.]
///
public virtual void RegisterRadioButton(RadioButton radioButton) {
string groupName = radioButton.GroupName;
if (String.IsNullOrEmpty(groupName))
return;
ArrayList group = null;
if (_radioButtonGroups == null) {
_radioButtonGroups = new ListDictionary();
}
if (_radioButtonGroups.Contains(groupName)) {
group = (RadioButtonGroupList) _radioButtonGroups[groupName];
}
else {
group = new RadioButtonGroupList();
_radioButtonGroups[groupName] = group;
}
group.Add(radioButton);
}
///
/// [To be supplied.]
///
public virtual void RenderBeginHyperlink(HtmlTextWriter writer, string targetUrl, bool encodeUrl, string softkeyLabel) {
RenderBeginHyperlink(writer, targetUrl, encodeUrl, softkeyLabel, null /* accessKey */);
}
///
/// [To be supplied.]
///
public virtual void RenderBeginHyperlink(HtmlTextWriter writer, string targetUrl, bool encodeUrl, string softkeyLabel, string accessKey) {
String url;
// Valid values are null, String.Empty, and single character strings
if ((accessKey != null) && (accessKey.Length > 1)) {
throw new ArgumentOutOfRangeException("accessKey");
}
if (encodeUrl) {
url = HttpUtility.HtmlAttributeEncode(targetUrl);
}
else {
url = targetUrl;
}
writer.AddAttribute("href", url);
if (!String.IsNullOrEmpty(accessKey)) {
writer.AddAttribute("accessKey", accessKey);
}
writer.RenderBeginTag("a");
}
///
/// [To be supplied.]
///
public virtual void RenderEndHyperlink(HtmlTextWriter writer) {
writer.WriteEndTag("a");
}
public virtual void RenderPostBackEvent(HtmlTextWriter writer, string target, string argument, string softkeyLabel, string text) {
RenderPostBackEvent(writer, target, argument, softkeyLabel, text, null /*postUrl */, null /* accesskey */);
}
///
/// Renders a client widget corresponding to a postback event, for example a wml do or a post link. Note that this
/// widget may not submit the form data, e.g. scriptless html where this renders a link.
///
public virtual void RenderPostBackEvent(HtmlTextWriter writer, string target, string argument, string softkeyLabel, string text, string postUrl, string accessKey) {
RenderPostBackEvent(writer, target, argument, softkeyLabel, text, postUrl, accessKey, false /* encode */);
}
///
/// Renders a client widget corresponding to a postback event, for example a wml do or a post link. Note that this
/// widget may not submit the form data, e.g. scriptless html where this renders a link.
///
protected void RenderPostBackEvent(HtmlTextWriter writer, string target, string argument, string softkeyLabel, string text, string postUrl, string accessKey, bool encode) {
// Default: render postback event as scriptless anchor (works for all markups). Override for specific markups.
string amp = encode ? "&" : "&";
bool isCrossPagePostBack = !String.IsNullOrEmpty(postUrl);
writer.WriteBeginTag("a");
writer.Write(" href=\"");
string url = null;
if (!isCrossPagePostBack) {
if ((String)Browser["requiresAbsolutePostbackUrl"] == "true") {
url = Page.Response.ApplyAppPathModifier(Page.Request.CurrentExecutionFilePath);
}
else {
url = Page.RelativeFilePath;
}
}
else {
url = postUrl;
Page.ContainsCrossPagePost = true;
}
writer.WriteEncodedUrl(url);
writer.Write("?");
string clientState = ClientState;
if (clientState != null)
{
ICollection chunks = Page.DecomposeViewStateIntoChunks();
// Default chunk count is 1
if (chunks.Count > 1) {
writer.Write(Page.ViewStateFieldCountID + "=" + chunks.Count + amp);
}
int count = 0;
foreach (String state in chunks) {
writer.Write(Page.ViewStateFieldPrefixID);
if (count > 0) writer.Write(count.ToString(CultureInfo.CurrentCulture));
writer.Write("=" + HttpUtility.UrlEncode(state));
writer.Write(amp);
++count;
}
}
if (isCrossPagePostBack) {
writer.Write(Page.previousPageID);
writer.Write("=" + Page.EncryptString(Page.Request.CurrentExecutionFilePath));
writer.Write(amp);
}
writer.Write("__EVENTTARGET=" + HttpUtility.UrlEncode(target));
writer.Write(amp);
writer.Write("__EVENTARGUMENT=" + HttpUtility.UrlEncode(argument));
//
string queryStringText = QueryString;
if (!String.IsNullOrEmpty(queryStringText)) {
writer.Write(amp);
writer.Write(queryStringText);
}
writer.Write("\"");
if (!String.IsNullOrEmpty(accessKey)) {
writer.WriteAttribute("accessKey", accessKey);
}
writer.Write(">");
writer.Write(text);
writer.WriteEndTag("a");
}
///
/// Transforms text for the target device. The default transformation is the identity transformation,
/// which does not change the text.
///
public virtual string TransformText(string text) {
return text;
}
}
internal class RadioButtonGroupList : ArrayList {
#if SHIPPINGADAPTERS
private bool _autoPostBackRadioButtonsChecked;
private bool _containsAutoPostBackRadioButtons;
internal bool ContainsAutoPostBackRadioButtons {
get {
if (_autoPostBackRadioButtonsChecked)
return _containsAutoPostBackRadioButtons;
for (IEnumerator e = this.GetEnumerator(); e.MoveNext();) {
RadioButton radioButton = (RadioButton)e.Current;
if (radioButton.AutoPostBack) {
_containsAutoPostBackRadioButtons = true;
break;
}
}
_autoPostBackRadioButtonsChecked = true;
return _containsAutoPostBackRadioButtons;
}
}
#endif
}
}
// 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
- EncodingNLS.cs
- SystemIPInterfaceProperties.cs
- WinEventHandler.cs
- ObjectToken.cs
- DefaultMemberAttribute.cs
- XmlImplementation.cs
- TreeViewAutomationPeer.cs
- AffineTransform3D.cs
- TextElement.cs
- ComponentDispatcher.cs
- CollectionAdapters.cs
- PropertyEntry.cs
- TokenBasedSet.cs
- ObjectConverter.cs
- ObjectIDGenerator.cs
- AdjustableArrowCap.cs
- DrawingImage.cs
- DelegateSerializationHolder.cs
- DataGridViewTopLeftHeaderCell.cs
- TextElementEditingBehaviorAttribute.cs
- AppDomainAttributes.cs
- RuntimeDelegateArgument.cs
- RouteCollection.cs
- ResetableIterator.cs
- DataServiceQueryProvider.cs
- dataprotectionpermission.cs
- ListBoxDesigner.cs
- MembershipUser.cs
- ExeConfigurationFileMap.cs
- CmsUtils.cs
- EndpointFilterProvider.cs
- HtmlGenericControl.cs
- KeyInfo.cs
- SafeThemeHandle.cs
- PaperSize.cs
- BrowserDefinitionCollection.cs
- CacheSection.cs
- SerialErrors.cs
- CellRelation.cs
- HttpCacheParams.cs
- ToolboxComponentsCreatedEventArgs.cs
- FixedSOMPageConstructor.cs
- ListViewCancelEventArgs.cs
- SegmentInfo.cs
- InvalidPrinterException.cs
- Rotation3D.cs
- SmiMetaDataProperty.cs
- NotificationContext.cs
- HtmlElementErrorEventArgs.cs
- GcSettings.cs
- GroupStyle.cs
- XmlSchemaInclude.cs
- MimePart.cs
- StaticTextPointer.cs
- TouchPoint.cs
- Point3DCollection.cs
- Constant.cs
- IpcPort.cs
- CompilationPass2TaskInternal.cs
- _MultipleConnectAsync.cs
- WindowHideOrCloseTracker.cs
- RequestCacheValidator.cs
- WasAdminWrapper.cs
- JapaneseLunisolarCalendar.cs
- HttpResponseInternalWrapper.cs
- Line.cs
- OdbcException.cs
- EdgeModeValidation.cs
- InlineUIContainer.cs
- DoubleMinMaxAggregationOperator.cs
- HtmlInputReset.cs
- Form.cs
- SqlLiftWhereClauses.cs
- RegexReplacement.cs
- SizeChangedEventArgs.cs
- UidManager.cs
- CustomAttribute.cs
- WorkflowMessageEventHandler.cs
- ZoneButton.cs
- AlternationConverter.cs
- SessionStateUtil.cs
- DbProviderServices.cs
- LinkDesigner.cs
- DateTimeOffset.cs
- PeerService.cs
- ColumnBinding.cs
- WebBrowserProgressChangedEventHandler.cs
- SByte.cs
- PlainXmlWriter.cs
- NamespaceTable.cs
- RegisteredArrayDeclaration.cs
- TrackingServices.cs
- TypeConverterAttribute.cs
- ZipIOLocalFileDataDescriptor.cs
- SwitchAttribute.cs
- ApplicationBuildProvider.cs
- ECDsa.cs
- OleDbCommandBuilder.cs
- DesignerSerializationManager.cs
- ExpressionEditorSheet.cs