Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- FloatSumAggregationOperator.cs
- SharedStatics.cs
- ExtensionDataObject.cs
- NestedContainer.cs
- UiaCoreTypesApi.cs
- X509Certificate2.cs
- BlurEffect.cs
- SettingsAttributes.cs
- SystemEvents.cs
- AutomationFocusChangedEventArgs.cs
- SchemaNotation.cs
- WindowsRegion.cs
- XmlNullResolver.cs
- SignatureGenerator.cs
- RelationshipEndMember.cs
- SmtpTransport.cs
- SoapCodeExporter.cs
- TreeIterators.cs
- PerCallInstanceContextProvider.cs
- Source.cs
- NameObjectCollectionBase.cs
- XPathNodeIterator.cs
- FixedPageStructure.cs
- StrongNamePublicKeyBlob.cs
- CustomGrammar.cs
- ValidationHelper.cs
- Cursor.cs
- Attribute.cs
- TTSEngineProxy.cs
- Configuration.cs
- Clipboard.cs
- XmlSchemaGroup.cs
- SqlMultiplexer.cs
- TileBrush.cs
- AppSettingsReader.cs
- ProxyGenerator.cs
- StringFreezingAttribute.cs
- SqlMethodCallConverter.cs
- MemberHolder.cs
- LayoutEngine.cs
- ErrorReporting.cs
- DependencyObject.cs
- ExpandoClass.cs
- SqlConnection.cs
- TablePattern.cs
- DataReceivedEventArgs.cs
- ImageIndexConverter.cs
- SocketException.cs
- XDeferredAxisSource.cs
- WindowPatternIdentifiers.cs
- ImageField.cs
- SystemWebSectionGroup.cs
- ConfigXmlElement.cs
- ScriptManagerProxy.cs
- HtmlTableRowCollection.cs
- SortExpressionBuilder.cs
- OdbcStatementHandle.cs
- UIElement3DAutomationPeer.cs
- ObjectKeyFrameCollection.cs
- AstTree.cs
- RequestResizeEvent.cs
- WindowsPrincipal.cs
- DeclaredTypeValidatorAttribute.cs
- RawStylusInputCustomData.cs
- DictationGrammar.cs
- SkinBuilder.cs
- StylusPointCollection.cs
- SqlInternalConnection.cs
- EditingMode.cs
- TriggerCollection.cs
- SecureConversationDriver.cs
- WaitHandleCannotBeOpenedException.cs
- IISMapPath.cs
- _LoggingObject.cs
- DataControlLinkButton.cs
- AnimationClockResource.cs
- DataGridViewColumnConverter.cs
- DbTypeMap.cs
- IList.cs
- ScriptingProfileServiceSection.cs
- CapabilitiesAssignment.cs
- DesignerPainter.cs
- TextRunCache.cs
- BamlRecordHelper.cs
- StateElement.cs
- Attributes.cs
- TypedTableBase.cs
- COMException.cs
- CompatibleComparer.cs
- ReadOnlyDataSourceView.cs
- SoapHttpTransportImporter.cs
- RuleAttributes.cs
- MSAANativeProvider.cs
- ArraySortHelper.cs
- Win32KeyboardDevice.cs
- InputLanguageCollection.cs
- DataGridColumnHeaderCollection.cs
- HitTestParameters.cs
- SQLSingleStorage.cs
- WebPartDeleteVerb.cs