Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- securestring.cs
- basemetadatamappingvisitor.cs
- XmlCustomFormatter.cs
- _RequestCacheProtocol.cs
- ColumnMapTranslator.cs
- NamespaceInfo.cs
- MatrixAnimationUsingPath.cs
- ObservableCollection.cs
- Attributes.cs
- LiteralControl.cs
- ResourceProviderFactory.cs
- AutomationEventArgs.cs
- Bidi.cs
- EventArgs.cs
- ParentControlDesigner.cs
- GroupedContextMenuStrip.cs
- Decorator.cs
- EffectiveValueEntry.cs
- XmlSchemaSimpleTypeList.cs
- TabControlCancelEvent.cs
- TypeContext.cs
- SqlDataReader.cs
- EdmProperty.cs
- RepeaterCommandEventArgs.cs
- CssStyleCollection.cs
- CheckBox.cs
- FormsAuthentication.cs
- CompositeControlDesigner.cs
- QueryPageSettingsEventArgs.cs
- TimeZone.cs
- ApplicationFileCodeDomTreeGenerator.cs
- ToolStripDropDownClosedEventArgs.cs
- ObjectConverter.cs
- SizeFConverter.cs
- Grant.cs
- DynamicMethod.cs
- Pick.cs
- SqlDataSourceWizardForm.cs
- TypeUtil.cs
- JournalEntryStack.cs
- DurableInstanceProvider.cs
- OperationFormatUse.cs
- HandleRef.cs
- WebPartTransformerAttribute.cs
- BlockUIContainer.cs
- HashStream.cs
- MarkedHighlightComponent.cs
- StorageSetMapping.cs
- HeaderLabel.cs
- ToolStripManager.cs
- CodeGotoStatement.cs
- ContextQuery.cs
- ConfigurationException.cs
- SystemParameters.cs
- DelegatingConfigHost.cs
- StatusBarItem.cs
- SqlUtil.cs
- RemotingSurrogateSelector.cs
- ObjectViewListener.cs
- TrackBarDesigner.cs
- DataGridHeaderBorder.cs
- Assembly.cs
- ResourceDictionary.cs
- MsmqHostedTransportConfiguration.cs
- SetUserLanguageRequest.cs
- PageSetupDialog.cs
- XmlAttributeCache.cs
- CollectionChangeEventArgs.cs
- SafeFileMappingHandle.cs
- XmlMembersMapping.cs
- CorrelationInitializer.cs
- SoapElementAttribute.cs
- ScrollProperties.cs
- httpapplicationstate.cs
- TypeSystem.cs
- FontStretch.cs
- SymmetricSecurityProtocol.cs
- WinEventQueueItem.cs
- ExpressionEditorAttribute.cs
- ISAPIApplicationHost.cs
- ConditionalAttribute.cs
- ApplicationInfo.cs
- FixedNode.cs
- CodeSnippetStatement.cs
- StylusButton.cs
- CommandSet.cs
- TokenFactoryFactory.cs
- Thread.cs
- WebContext.cs
- RuntimeHandles.cs
- NamespaceList.cs
- AsmxEndpointPickerExtension.cs
- EndOfStreamException.cs
- RemoteCryptoSignHashRequest.cs
- SyndicationDeserializer.cs
- CryptoProvider.cs
- GetWinFXPath.cs
- BamlLocalizabilityResolver.cs
- HtmlInputButton.cs
- AssemblyCache.cs