Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / MIT / System / Web / UI / MobileControls / Adapters / XhtmlAdapters / XhtmlBasicFormAdapter.cs / 1305376 / XhtmlBasicFormAdapter.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
using System;
using System.Globalization;
using System.Security.Permissions;
using System.Web;
using System.Web.UI;
using System.Web.Mobile;
using System.Web.Security;
using System.Web.UI.MobileControls;
using System.Web.UI.MobileControls.Adapters;
using System.Collections;
#if COMPILING_FOR_SHIPPED_SOURCE
namespace System.Web.UI.MobileControls.ShippedAdapterSource.XhtmlAdapters
#else
namespace System.Web.UI.MobileControls.Adapters.XhtmlAdapters
#endif
{
///
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")]
public class XhtmlFormAdapter : XhtmlControlAdapter {
///
public new Form Control {
get {
return base.Control as Form;
}
}
///
public override void Render (XhtmlMobileTextWriter writer) {
// Note: , rendered by page adapter, as in HTML case.
String formsAuthCookieName = FormsAuthentication.FormsCookieName;
if(!Device.SupportsRedirectWithCookie)
{
if(formsAuthCookieName != null && formsAuthCookieName.Length > 0)
{
HttpContext.Current.Response.Cookies.Remove(formsAuthCookieName);
}
}
writer.WriteBeginTag ("form");
writer.WriteAttribute ("id", Control.ClientID);
writer.WriteAttribute ("method", Control.Method.ToString().ToLower(CultureInfo.CurrentCulture));
writer.Write (" action=\"");
RenderPostbackUrl(writer);
if(Control.Action.Length > 0) {
if(Control.Action.IndexOf("?", StringComparison.Ordinal) != -1) {
writer.Write("&");
}
else {
writer.Write("?");
}
}
else {
writer.Write("?");
}
writer.Write(Page.UniqueFilePathSuffix);
if (Control.Method != FormMethod.Get &&
Control.Action.Length == 0) { // VSWhidbey 411176: We don't include QueryStringText if Action is explicitly set
String queryStringText = PreprocessQueryString(Page.QueryStringText);
if (queryStringText != null && queryStringText.Length > 0) {
String amp = (String)Device[XhtmlConstants.SupportsUrlAttributeEncoding] != "false" ? "&" : "&";
writer.Write(amp);
if((String)Device[XhtmlConstants.SupportsUrlAttributeEncoding] != "false") {
writer.WriteEncodedText(queryStringText);
}
else {
writer.Write(queryStringText);
}
}
}
writer.WriteLine ("\">");
bool needDivStyle = (String)Device[XhtmlConstants.RequiresXhtmlCssSuppression] != "true" &&
(String)Device["supportsBodyClassAttribute"] == "false";
if (!needDivStyle) {
if((String)Device["usePOverDiv"] == "true")
writer.WriteFullBeginTag("p");
else
writer.WriteFullBeginTag ("div");
}
else {
if((String)Device["usePOverDiv"] == "true")
writer.EnterStyle(Style, "p");
else
writer.EnterStyle (Style, "div");
}
RenderPostBackHeader (writer);
// Renders hidden variables for IPostBackDataHandlers which are
// not displayed due to pagination or secondary UI.
RenderOffPageVariables(writer, Control, Control.CurrentPage);
RenderChildren (writer);
if (!needDivStyle) {
if((String)Device["usePOverDiv"] == "true")
writer.WriteEndTag("p");
else
writer.WriteEndTag ("div");
}
else {
if((String)Device["usePOverDiv"] == "true")
writer.ExitStyle(Style);
else
writer.ExitStyle (Style);
}
writer.WriteEndTag ("form");
}
private void RenderPostBackHeader(XhtmlMobileTextWriter writer) {
bool postBack = Page.ActiveForm.Action.Length == 0;
RenderPageState(writer);
if (!postBack) {
writer.WriteHiddenField(PageAdapter.EventSourceKey, XhtmlConstants.PostedFromOtherFile);
}
else if (Page.ClientViewState == null) {
// The empty event source variable is used to identify a
// postback request. Value attribute is not needed, and some
// devices do not allow empty string value attributes.
if ((String)Device["requiresHiddenFieldValues"] != "true") {
writer.WriteHiddenField(PageAdapter.EventSourceKey);
}
else {
// Placeholder value is never used, just needed for some devices.
writer.WriteHiddenField(PageAdapter.EventSourceKey, PageAdapter.EventSourceKey);
}
}
RenderHiddenVariables(writer);
}
private void RenderHiddenVariables(XhtmlMobileTextWriter writer) {
if (Page.HasHiddenVariables()) {
String hiddenVariablePrefix = MobilePage.HiddenVariablePrefix;
foreach (DictionaryEntry entry in Page.HiddenVariables) {
if (entry.Value != null) {
writer.WriteHiddenField(hiddenVariablePrefix + (String)entry.Key,
(String)entry.Value);
}
}
}
}
private void RenderPageState (XhtmlMobileTextWriter writer) {
String viewState = Page.ClientViewState;
if (viewState != null) {
writer.WriteHiddenField (MobilePage.ViewStateID, viewState);
}
}
private void RenderChildren (XhtmlMobileTextWriter writer) {
if (SecondaryUIControl != null) {
RenderSecondaryUI (writer);
return;
}
bool pagerRendered = false;
if(Control.HasControls()) {
foreach(Control child in Control.Controls) {
if(Control.Footer == child) {
RenderPager(writer);
pagerRendered = true;
}
child.RenderControl(writer);
}
}
if(!pagerRendered) {
RenderPager(writer);
}
}
private void RenderSecondaryUI (XhtmlMobileTextWriter writer){
bool secondaryUIInHeaderOrFooter = IsControlInFormHeader (SecondaryUIControl)
|| IsControlInFormFooter (SecondaryUIControl);
SetControlPageRecursive(SecondaryUIControl, -1);
if (Control.Header != null && !secondaryUIInHeaderOrFooter) {
Control.Header.RenderControl (writer);
}
OpenSecondaryUIDivs(writer, SecondaryUIControl);
SecondaryUIControl.RenderControl (writer);
CloseSecondaryUIDivs(writer);
if (Control.Footer != null && !secondaryUIInHeaderOrFooter) {
Control.Footer.RenderControl (writer);
}
}
/////////////////////////////////////////////////////////////////////////
// SECONDARY UI SUPPORT
/////////////////////////////////////////////////////////////////////////
private MobileControl _secondaryUIControl;
private int _secondaryUIMode;
private int _secondaryUIDivsOpened = 0;
private void OpenSecondaryUIDivs(XhtmlMobileTextWriter writer, Control control) {
Control ctl = control.Parent as MobileControl;
while (ctl != null) {
String cssClass = ((IAttributeAccessor) ctl).GetAttribute(XhtmlConstants.CssClassCustomAttribute);
if (cssClass != null && cssClass. Length > 0) {
if((String)Device["usePOverDiv"] == "true") {
writer.WriteBeginTag("p");
}
else {
writer.WriteBeginTag("div");
}
writer.WriteAttribute("class", cssClass, true);
writer.WriteLine(">");
_secondaryUIDivsOpened++;
}
ctl = ctl.Parent as MobileControl;
}
}
private void CloseSecondaryUIDivs(XhtmlMobileTextWriter writer) {
for (int i = 0; i < _secondaryUIDivsOpened; i++) {
if((String)Device["usePOverDiv"] == "true") {
writer.WriteEndTag("p");
}
else {
writer.WriteEndTag("div");
}
writer.WriteLine();
}
}
internal int GetSecondaryUIMode(MobileControl control) {
return (control != null && _secondaryUIControl == control) ? _secondaryUIMode : NotSecondaryUI;
}
internal void SetSecondaryUIMode(MobileControl control, int mode) {
if (mode != NotSecondaryUI) {
if (_secondaryUIControl != null && _secondaryUIControl != control) {
throw new Exception(
SR.GetString(SR.FormAdapterMultiControlsAttemptSecondaryUI));
}
_secondaryUIControl = control;
_secondaryUIMode = mode;
return;
}
if (control == _secondaryUIControl) {
_secondaryUIControl = null;
}
}
internal MobileControl SecondaryUIControl {
get {
return _secondaryUIControl;
}
}
// Used for Secondary UI.
private bool IsControlInFormHeader(MobileControl control) {
return IsAncestor(Control.Header, control);
}
// Used for Secondary UI.
private bool IsControlInFormFooter(MobileControl control) {
return IsAncestor(Control.Footer, control);
}
private bool IsAncestor(MobileControl ancestor, MobileControl descendant) {
for (Control i = descendant; i != null; i = i.Parent) {
if (i == ancestor) {
return true;
}
}
return false;
}
/////////////////////////////////////////////////////////////////////////
// PAGINATION SUPPORT
/////////////////////////////////////////////////////////////////////////
///
protected virtual void RenderPager (XhtmlMobileTextWriter writer) {
PagerStyle pagerStyle = Control.PagerStyle;
int pageCount = Control.PageCount;
if (pageCount <= 1) {
return;
}
int page = Control.CurrentPage;
String text = pagerStyle.GetPageLabelText(page, pageCount);
if((page > 1) || (text.Length > 0) || (page < pageCount)) {
writer.WritePendingBreak();
ConditionalEnterStyle(writer, pagerStyle);
ConditionalEnterPagerSpan(writer);
}
if (page > 1) {
RenderPagerTag(writer, page - 1,
pagerStyle.GetPreviousPageText(page),
XhtmlConstants.PagerPreviousAccessKeyCustomAttribute);
writer.Write(" ");
}
if (text.Length > 0) {
writer.WriteEncodedText(text);
writer.Write(" ");
}
if (page < pageCount) {
RenderPagerTag(writer, page + 1,
pagerStyle.GetNextPageText(page),
XhtmlConstants.PagerNextAccessKeyCustomAttribute);
}
if((page > 1) || (text.Length > 0) || (page < pageCount)) {
ConditionalExitPagerSpan(writer);
ConditionalExitStyle(writer, pagerStyle);
writer.SetPendingBreak();
}
}
private bool _pagerCssSpanWritten = false;
private void ConditionalEnterPagerSpan(XhtmlMobileTextWriter writer) {
String cssClass = GetCustomAttributeValue(XhtmlConstants.CssPagerClassCustomAttribute);
if (CssLocation == StyleSheetLocation.PhysicalFile &&
cssClass != null &&
cssClass.Length > 0) {
writer.WriteBeginTag ("span");
writer.WriteAttribute("class", cssClass, true);
_pagerCssSpanWritten = true;
writer.Write(">");
}
}
private void ConditionalExitPagerSpan(XhtmlMobileTextWriter writer) {
if (_pagerCssSpanWritten) {
writer.WriteEndTag("span");
}
}
///
protected virtual void RenderPagerTag(
XhtmlMobileTextWriter writer,
int pageToNavigate,
String text,
String accessKeyCustomAttribute) {
writer.WriteBeginTag("input");
// Specially encode the page number with the control id.
// The corresponding code that handles postback should know how
// to extract the page number correctly.
writer.Write(" name=\"");
writer.Write(Control.UniqueID);
writer.Write(Constants.PagePrefix);
writer.Write(pageToNavigate.ToString(CultureInfo.InvariantCulture));
writer.Write("\"");
writer.WriteAttribute("type", "submit");
writer.WriteAttribute("value", text, true);
ConditionalRenderCustomAttribute(writer, accessKeyCustomAttribute, XhtmlConstants.AccessKeyCustomAttribute);
writer.Write("/>");
}
private void RenderPostbackUrl(XhtmlMobileTextWriter writer) {
if ((String)Device["requiresAbsolutePostbackUrl"] == "true") {
RenderAbsolutePostbackUrl (writer);
return;
}
if (Control.Action.Length > 0) {
String url = Control.ResolveUrl(PreprocessQueryString(Control.Action));
writer.Write(url);
}
else {
writer.WriteEncodedUrl(Page.RelativeFilePath);
}
}
private void RenderAbsolutePostbackUrl(XhtmlMobileTextWriter writer) {
String url = PreprocessQueryString(Control.Action);
if (url.Length > 0) {
// Not only do we need to resolve the URL, but we need to make it absolute.
url = Page.MakePathAbsolute(Control.ResolveUrl(url));
writer.Write(url);
}
else {
writer.WriteEncodedUrl(Page.AbsoluteFilePath);
}
}
private static void SetControlPageRecursive(Control control, int page)
{
MobileControl mc = control as MobileControl;
if(mc != null)
{
mc.FirstPage = page;
mc.LastPage = page;
}
if (control.HasControls())
{
foreach (Control child in control.Controls)
{
MobileControl mobileChild = child as MobileControl;
if (mobileChild != null)
{
mobileChild.FirstPage = page;
mobileChild.LastPage = page;
}
else
{
SetControlPageRecursive(child, page);
}
}
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
using System;
using System.Globalization;
using System.Security.Permissions;
using System.Web;
using System.Web.UI;
using System.Web.Mobile;
using System.Web.Security;
using System.Web.UI.MobileControls;
using System.Web.UI.MobileControls.Adapters;
using System.Collections;
#if COMPILING_FOR_SHIPPED_SOURCE
namespace System.Web.UI.MobileControls.ShippedAdapterSource.XhtmlAdapters
#else
namespace System.Web.UI.MobileControls.Adapters.XhtmlAdapters
#endif
{
///
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")]
public class XhtmlFormAdapter : XhtmlControlAdapter {
///
public new Form Control {
get {
return base.Control as Form;
}
}
///
public override void Render (XhtmlMobileTextWriter writer) {
// Note: , rendered by page adapter, as in HTML case.
String formsAuthCookieName = FormsAuthentication.FormsCookieName;
if(!Device.SupportsRedirectWithCookie)
{
if(formsAuthCookieName != null && formsAuthCookieName.Length > 0)
{
HttpContext.Current.Response.Cookies.Remove(formsAuthCookieName);
}
}
writer.WriteBeginTag ("form");
writer.WriteAttribute ("id", Control.ClientID);
writer.WriteAttribute ("method", Control.Method.ToString().ToLower(CultureInfo.CurrentCulture));
writer.Write (" action=\"");
RenderPostbackUrl(writer);
if(Control.Action.Length > 0) {
if(Control.Action.IndexOf("?", StringComparison.Ordinal) != -1) {
writer.Write("&");
}
else {
writer.Write("?");
}
}
else {
writer.Write("?");
}
writer.Write(Page.UniqueFilePathSuffix);
if (Control.Method != FormMethod.Get &&
Control.Action.Length == 0) { // VSWhidbey 411176: We don't include QueryStringText if Action is explicitly set
String queryStringText = PreprocessQueryString(Page.QueryStringText);
if (queryStringText != null && queryStringText.Length > 0) {
String amp = (String)Device[XhtmlConstants.SupportsUrlAttributeEncoding] != "false" ? "&" : "&";
writer.Write(amp);
if((String)Device[XhtmlConstants.SupportsUrlAttributeEncoding] != "false") {
writer.WriteEncodedText(queryStringText);
}
else {
writer.Write(queryStringText);
}
}
}
writer.WriteLine ("\">");
bool needDivStyle = (String)Device[XhtmlConstants.RequiresXhtmlCssSuppression] != "true" &&
(String)Device["supportsBodyClassAttribute"] == "false";
if (!needDivStyle) {
if((String)Device["usePOverDiv"] == "true")
writer.WriteFullBeginTag("p");
else
writer.WriteFullBeginTag ("div");
}
else {
if((String)Device["usePOverDiv"] == "true")
writer.EnterStyle(Style, "p");
else
writer.EnterStyle (Style, "div");
}
RenderPostBackHeader (writer);
// Renders hidden variables for IPostBackDataHandlers which are
// not displayed due to pagination or secondary UI.
RenderOffPageVariables(writer, Control, Control.CurrentPage);
RenderChildren (writer);
if (!needDivStyle) {
if((String)Device["usePOverDiv"] == "true")
writer.WriteEndTag("p");
else
writer.WriteEndTag ("div");
}
else {
if((String)Device["usePOverDiv"] == "true")
writer.ExitStyle(Style);
else
writer.ExitStyle (Style);
}
writer.WriteEndTag ("form");
}
private void RenderPostBackHeader(XhtmlMobileTextWriter writer) {
bool postBack = Page.ActiveForm.Action.Length == 0;
RenderPageState(writer);
if (!postBack) {
writer.WriteHiddenField(PageAdapter.EventSourceKey, XhtmlConstants.PostedFromOtherFile);
}
else if (Page.ClientViewState == null) {
// The empty event source variable is used to identify a
// postback request. Value attribute is not needed, and some
// devices do not allow empty string value attributes.
if ((String)Device["requiresHiddenFieldValues"] != "true") {
writer.WriteHiddenField(PageAdapter.EventSourceKey);
}
else {
// Placeholder value is never used, just needed for some devices.
writer.WriteHiddenField(PageAdapter.EventSourceKey, PageAdapter.EventSourceKey);
}
}
RenderHiddenVariables(writer);
}
private void RenderHiddenVariables(XhtmlMobileTextWriter writer) {
if (Page.HasHiddenVariables()) {
String hiddenVariablePrefix = MobilePage.HiddenVariablePrefix;
foreach (DictionaryEntry entry in Page.HiddenVariables) {
if (entry.Value != null) {
writer.WriteHiddenField(hiddenVariablePrefix + (String)entry.Key,
(String)entry.Value);
}
}
}
}
private void RenderPageState (XhtmlMobileTextWriter writer) {
String viewState = Page.ClientViewState;
if (viewState != null) {
writer.WriteHiddenField (MobilePage.ViewStateID, viewState);
}
}
private void RenderChildren (XhtmlMobileTextWriter writer) {
if (SecondaryUIControl != null) {
RenderSecondaryUI (writer);
return;
}
bool pagerRendered = false;
if(Control.HasControls()) {
foreach(Control child in Control.Controls) {
if(Control.Footer == child) {
RenderPager(writer);
pagerRendered = true;
}
child.RenderControl(writer);
}
}
if(!pagerRendered) {
RenderPager(writer);
}
}
private void RenderSecondaryUI (XhtmlMobileTextWriter writer){
bool secondaryUIInHeaderOrFooter = IsControlInFormHeader (SecondaryUIControl)
|| IsControlInFormFooter (SecondaryUIControl);
SetControlPageRecursive(SecondaryUIControl, -1);
if (Control.Header != null && !secondaryUIInHeaderOrFooter) {
Control.Header.RenderControl (writer);
}
OpenSecondaryUIDivs(writer, SecondaryUIControl);
SecondaryUIControl.RenderControl (writer);
CloseSecondaryUIDivs(writer);
if (Control.Footer != null && !secondaryUIInHeaderOrFooter) {
Control.Footer.RenderControl (writer);
}
}
/////////////////////////////////////////////////////////////////////////
// SECONDARY UI SUPPORT
/////////////////////////////////////////////////////////////////////////
private MobileControl _secondaryUIControl;
private int _secondaryUIMode;
private int _secondaryUIDivsOpened = 0;
private void OpenSecondaryUIDivs(XhtmlMobileTextWriter writer, Control control) {
Control ctl = control.Parent as MobileControl;
while (ctl != null) {
String cssClass = ((IAttributeAccessor) ctl).GetAttribute(XhtmlConstants.CssClassCustomAttribute);
if (cssClass != null && cssClass. Length > 0) {
if((String)Device["usePOverDiv"] == "true") {
writer.WriteBeginTag("p");
}
else {
writer.WriteBeginTag("div");
}
writer.WriteAttribute("class", cssClass, true);
writer.WriteLine(">");
_secondaryUIDivsOpened++;
}
ctl = ctl.Parent as MobileControl;
}
}
private void CloseSecondaryUIDivs(XhtmlMobileTextWriter writer) {
for (int i = 0; i < _secondaryUIDivsOpened; i++) {
if((String)Device["usePOverDiv"] == "true") {
writer.WriteEndTag("p");
}
else {
writer.WriteEndTag("div");
}
writer.WriteLine();
}
}
internal int GetSecondaryUIMode(MobileControl control) {
return (control != null && _secondaryUIControl == control) ? _secondaryUIMode : NotSecondaryUI;
}
internal void SetSecondaryUIMode(MobileControl control, int mode) {
if (mode != NotSecondaryUI) {
if (_secondaryUIControl != null && _secondaryUIControl != control) {
throw new Exception(
SR.GetString(SR.FormAdapterMultiControlsAttemptSecondaryUI));
}
_secondaryUIControl = control;
_secondaryUIMode = mode;
return;
}
if (control == _secondaryUIControl) {
_secondaryUIControl = null;
}
}
internal MobileControl SecondaryUIControl {
get {
return _secondaryUIControl;
}
}
// Used for Secondary UI.
private bool IsControlInFormHeader(MobileControl control) {
return IsAncestor(Control.Header, control);
}
// Used for Secondary UI.
private bool IsControlInFormFooter(MobileControl control) {
return IsAncestor(Control.Footer, control);
}
private bool IsAncestor(MobileControl ancestor, MobileControl descendant) {
for (Control i = descendant; i != null; i = i.Parent) {
if (i == ancestor) {
return true;
}
}
return false;
}
/////////////////////////////////////////////////////////////////////////
// PAGINATION SUPPORT
/////////////////////////////////////////////////////////////////////////
///
protected virtual void RenderPager (XhtmlMobileTextWriter writer) {
PagerStyle pagerStyle = Control.PagerStyle;
int pageCount = Control.PageCount;
if (pageCount <= 1) {
return;
}
int page = Control.CurrentPage;
String text = pagerStyle.GetPageLabelText(page, pageCount);
if((page > 1) || (text.Length > 0) || (page < pageCount)) {
writer.WritePendingBreak();
ConditionalEnterStyle(writer, pagerStyle);
ConditionalEnterPagerSpan(writer);
}
if (page > 1) {
RenderPagerTag(writer, page - 1,
pagerStyle.GetPreviousPageText(page),
XhtmlConstants.PagerPreviousAccessKeyCustomAttribute);
writer.Write(" ");
}
if (text.Length > 0) {
writer.WriteEncodedText(text);
writer.Write(" ");
}
if (page < pageCount) {
RenderPagerTag(writer, page + 1,
pagerStyle.GetNextPageText(page),
XhtmlConstants.PagerNextAccessKeyCustomAttribute);
}
if((page > 1) || (text.Length > 0) || (page < pageCount)) {
ConditionalExitPagerSpan(writer);
ConditionalExitStyle(writer, pagerStyle);
writer.SetPendingBreak();
}
}
private bool _pagerCssSpanWritten = false;
private void ConditionalEnterPagerSpan(XhtmlMobileTextWriter writer) {
String cssClass = GetCustomAttributeValue(XhtmlConstants.CssPagerClassCustomAttribute);
if (CssLocation == StyleSheetLocation.PhysicalFile &&
cssClass != null &&
cssClass.Length > 0) {
writer.WriteBeginTag ("span");
writer.WriteAttribute("class", cssClass, true);
_pagerCssSpanWritten = true;
writer.Write(">");
}
}
private void ConditionalExitPagerSpan(XhtmlMobileTextWriter writer) {
if (_pagerCssSpanWritten) {
writer.WriteEndTag("span");
}
}
///
protected virtual void RenderPagerTag(
XhtmlMobileTextWriter writer,
int pageToNavigate,
String text,
String accessKeyCustomAttribute) {
writer.WriteBeginTag("input");
// Specially encode the page number with the control id.
// The corresponding code that handles postback should know how
// to extract the page number correctly.
writer.Write(" name=\"");
writer.Write(Control.UniqueID);
writer.Write(Constants.PagePrefix);
writer.Write(pageToNavigate.ToString(CultureInfo.InvariantCulture));
writer.Write("\"");
writer.WriteAttribute("type", "submit");
writer.WriteAttribute("value", text, true);
ConditionalRenderCustomAttribute(writer, accessKeyCustomAttribute, XhtmlConstants.AccessKeyCustomAttribute);
writer.Write("/>");
}
private void RenderPostbackUrl(XhtmlMobileTextWriter writer) {
if ((String)Device["requiresAbsolutePostbackUrl"] == "true") {
RenderAbsolutePostbackUrl (writer);
return;
}
if (Control.Action.Length > 0) {
String url = Control.ResolveUrl(PreprocessQueryString(Control.Action));
writer.Write(url);
}
else {
writer.WriteEncodedUrl(Page.RelativeFilePath);
}
}
private void RenderAbsolutePostbackUrl(XhtmlMobileTextWriter writer) {
String url = PreprocessQueryString(Control.Action);
if (url.Length > 0) {
// Not only do we need to resolve the URL, but we need to make it absolute.
url = Page.MakePathAbsolute(Control.ResolveUrl(url));
writer.Write(url);
}
else {
writer.WriteEncodedUrl(Page.AbsoluteFilePath);
}
}
private static void SetControlPageRecursive(Control control, int page)
{
MobileControl mc = control as MobileControl;
if(mc != null)
{
mc.FirstPage = page;
mc.LastPage = page;
}
if (control.HasControls())
{
foreach (Control child in control.Controls)
{
MobileControl mobileChild = child as MobileControl;
if (mobileChild != null)
{
mobileChild.FirstPage = page;
mobileChild.LastPage = page;
}
else
{
SetControlPageRecursive(child, page);
}
}
}
}
}
}
// 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
- PrinterUnitConvert.cs
- DataContractSerializerServiceBehavior.cs
- SessionParameter.cs
- ExceptionTranslationTable.cs
- InternalSafeNativeMethods.cs
- HwndKeyboardInputProvider.cs
- StyleCollection.cs
- ImageFormatConverter.cs
- DynamicFilterExpression.cs
- DataGridViewComboBoxCell.cs
- Certificate.cs
- TextBoxDesigner.cs
- StaticTextPointer.cs
- RefExpr.cs
- UDPClient.cs
- ClientEventManager.cs
- SafeHandles.cs
- SafeEventHandle.cs
- StatusStrip.cs
- SqlConnectionFactory.cs
- NoResizeSelectionBorderGlyph.cs
- CollectionChangedEventManager.cs
- ListBoxItem.cs
- GuidelineCollection.cs
- DataGridViewCellMouseEventArgs.cs
- ViewValidator.cs
- ButtonBase.cs
- TextEffect.cs
- AccessControlEntry.cs
- _TLSstream.cs
- RegexTree.cs
- DateTimeFormat.cs
- CharacterBufferReference.cs
- NaturalLanguageHyphenator.cs
- ContainerAction.cs
- UserControlDocumentDesigner.cs
- ConnectionOrientedTransportChannelFactory.cs
- LocalizationParserHooks.cs
- QueueProcessor.cs
- BaseCodeDomTreeGenerator.cs
- DataGridViewCellMouseEventArgs.cs
- UrlMappingCollection.cs
- documentsequencetextpointer.cs
- RangeValidator.cs
- RawStylusInputCustomData.cs
- Condition.cs
- Comparer.cs
- UInt32Converter.cs
- BatchServiceHost.cs
- ToolboxComponentsCreatingEventArgs.cs
- TextSegment.cs
- dbdatarecord.cs
- EUCJPEncoding.cs
- BinaryFormatterWriter.cs
- IODescriptionAttribute.cs
- QuadraticBezierSegment.cs
- DeadCharTextComposition.cs
- FilterQuery.cs
- SpanIndex.cs
- OverlappedContext.cs
- XmlQueryType.cs
- ContextMenuAutomationPeer.cs
- ProviderException.cs
- AttachedPropertyBrowsableAttribute.cs
- XamlTypeMapper.cs
- ServiceOperationInfoTypeConverter.cs
- BuildProvider.cs
- DataBoundControlHelper.cs
- DataColumnChangeEvent.cs
- ScriptResourceAttribute.cs
- DataGridBeginningEditEventArgs.cs
- Annotation.cs
- Configuration.cs
- PersistChildrenAttribute.cs
- DataRowComparer.cs
- XmlSchemaSimpleContentRestriction.cs
- TextUtf8RawTextWriter.cs
- CloudCollection.cs
- MemberRelationshipService.cs
- BitVec.cs
- TableRowGroupCollection.cs
- SmtpCommands.cs
- SoapSchemaExporter.cs
- SocketAddress.cs
- DbModificationCommandTree.cs
- GridViewAutomationPeer.cs
- DiscoveryClientDocuments.cs
- SocketAddress.cs
- XmlSchemaValidator.cs
- DesigntimeLicenseContextSerializer.cs
- SchemaImporterExtension.cs
- ClusterRegistryConfigurationProvider.cs
- PeerOutputChannel.cs
- FormsAuthenticationUserCollection.cs
- Pair.cs
- IUnknownConstantAttribute.cs
- GacUtil.cs
- DataGridAddNewRow.cs
- SQLString.cs
- Page.cs