Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / xsp / System / Web / UI / WebControls / ImageMap.cs / 5 / ImageMap.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.WebControls { using System; using System.ComponentModel; using System.Globalization; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.Util; using System.Web; using System.Security.Permissions; ////// [ DefaultEvent("Click"), DefaultProperty("HotSpots"), ParseChildren(true, "HotSpots"), SupportsEventValidation, ] [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] public class ImageMap : Image, IPostBackEventHandler { private static readonly object EventClick = new object(); private bool _hasHotSpots; private HotSpotCollection _hotSpots; #if SITECOUNTERS [ WebCategory("SiteCounters"), DefaultValue("ImageMap"), Themeable(false), WebSysDescription(SR.Control_For_SiteCounters_CounterGroup), ] public String CounterGroup { get { String s = (String)ViewState["CounterGroup"]; return((s == null) ? "ImageMap" : s); } set { ViewState["CounterGroup"] = value; } } ///ImageMap class. Provides support for multiple /// region-defined actions within an image. ////// [ WebCategory("SiteCounters"), DefaultValue(""), Themeable(false), WebSysDescription(SR.Control_For_SiteCounters_CounterName), ] public String CounterName { get { String s = (String)ViewState["CounterName"]; return((s == null) ? String.Empty : s); } set { ViewState["CounterName"] = value; } } [ WebCategory("SiteCounters"), DefaultValue(false), Themeable(false), WebSysDescription(SR.Control_For_SiteCounters_CountClicks), ] public bool CountClicks { get { object b = ViewState["CountClicks"]; return((b == null) ? false : (bool)b); } set { ViewState["CountClicks"] = value; } } #endif [ Browsable(true), EditorBrowsableAttribute(EditorBrowsableState.Always) ] public override bool Enabled { get { return base.Enabled; } set { base.Enabled = value; } } ///Gets or sets the target name for qualifying click-through counters. ////// [ WebCategory("Behavior"), WebSysDescription(SR.ImageMap_HotSpots), DesignerSerializationVisibility(DesignerSerializationVisibility.Content), NotifyParentProperty(true), PersistenceMode(PersistenceMode.InnerDefaultProperty) ] public HotSpotCollection HotSpots { get { if (_hotSpots == null) { _hotSpots = new HotSpotCollection(); if (IsTrackingViewState) { ((IStateManager)_hotSpots).TrackViewState(); } } return _hotSpots; } } ///Gets the HotSpotCollection with defines the regions of ImageMap hot spots. ////// [ WebCategory("Behavior"), DefaultValue(HotSpotMode.NotSet), WebSysDescription(SR.HotSpot_HotSpotMode), ] public virtual HotSpotMode HotSpotMode { get { object obj = ViewState["HotSpotMode"]; return (obj == null) ? HotSpotMode.NotSet : (HotSpotMode)obj; } set { if (value < HotSpotMode.NotSet || value > HotSpotMode.Inactive) { throw new ArgumentOutOfRangeException("value"); } ViewState["HotSpotMode"] = value; } } #if SITECOUNTERS [ WebCategory("SiteCounters"), DefaultValue(-1), Themeable(false), WebSysDescription(SR.Control_For_SiteCounters_RowsPerDay), ] public int RowsPerDay { get { Object o = ViewState["RowsPerDay"]; return((o == null) ? -1 : (int) o); } set { if (value == 0) { throw new ArgumentOutOfRangeException("value"); } ViewState["RowsPerDay"] = value; } } [ WebCategory("SiteCounters"), DefaultValue(""), Themeable(false), WebSysDescription(SR.Control_For_SiteCounters_SiteCountersProvider) ] public String SiteCountersProvider { get { String s = (String) ViewState["SiteCountersProvider"]; return((s != null) ? s : String.Empty); } set { ViewState["SiteCountersProvider"] = value; } } #endif ///Gets or sets the HotSpotMode to either postback or navigation. ////// [ WebCategory("Behavior"), DefaultValue(""), WebSysDescription(SR.HotSpot_Target), ] public virtual string Target { get { object value = ViewState["Target"]; return (value == null)? String.Empty : (string)value; } set { ViewState["Target"] = value; } } #if SITECOUNTERS [ WebCategory("SiteCounters"), DefaultValue(true), Themeable(false), WebSysDescription(SR.Control_For_SiteCounters_TrackApplicationName), ] public bool TrackApplicationName { get { object b = ViewState["TrackApplicationName"]; return((b == null) ? true : (bool)b); } set { ViewState["TrackApplicationName"] = value; } } [ WebCategory("SiteCounters"), DefaultValue(true), Themeable(false), WebSysDescription(SR.Control_For_SiteCounters_TrackNavigateUrl), ] public bool TrackNavigateUrl { get { object b = ViewState["TrackNavigateUrl"]; return((b == null) ? true : (bool)b); } set { ViewState["TrackNavigateUrl"] = value; } } [ WebCategory("SiteCounters"), DefaultValue(true), Themeable(false), WebSysDescription(SR.Control_For_SiteCounters_TrackPageUrl), ] public bool TrackPageUrl { get { object b = ViewState["TrackPageUrl"]; return((b == null) ? true : (bool)b); } set { ViewState["TrackPageUrl"] = value; } } #endif ///Gets or sets the name of the window for navigation. ////// [ Category("Action"), WebSysDescription(SR.ImageMap_Click) ] public event ImageMapEventHandler Click { add { Events.AddHandler(EventClick, value); } remove { Events.RemoveHandler(EventClick, value); } } ///The event raised when a hotspot is clicked. ////// /// protected override void AddAttributesToRender(HtmlTextWriter writer) { base.AddAttributesToRender(writer); if (_hasHotSpots) { writer.AddAttribute(HtmlTextWriterAttribute.Usemap, "#ImageMap" + ClientID, false); } } #if SITECOUNTERS internal string GetCountClickUrl(string url) { if (CountClicks && url != null && url.Length > 0) { HttpContext context = Context; SiteCounters siteCounters = (context == null) ? null : context.SiteCounters; if (siteCounters != null && siteCounters.Enabled) { String counterName = CounterName; if (counterName != null && counterName.Length == 0) { if (UrlPath.IsRelativeUrl(url)) { // Make the path absolute for data reporting counterName = UrlPath.Combine(context.Request.FilePathObject, url); } else { counterName = url; } } url = siteCounters.GetRedirectUrl( CounterGroup, counterName, SiteCounters.ClickEventText, url, TrackApplicationName, TrackPageUrl, TrackNavigateUrl, SiteCountersProvider, RowsPerDay); } } return url; } #endif ///Overridden to add the "usemap" attribute the the image tag. /// Overrides WebControl.AddAttributesToRender. ////// protected override void LoadViewState(object savedState) { object baseState = null; object[] myState = null; if (savedState != null) { myState = (object[])savedState; if (myState.Length != 2) { throw new ArgumentException(SR.GetString(SR.ViewState_InvalidViewState)); } baseState = myState[0]; } base.LoadViewState(baseState); if ((myState != null) && (myState[1] != null)) { ((IStateManager)HotSpots).LoadViewState(myState[1]); } } ///Restores view-state information that was saved by SaveViewState. /// Implements IStateManager.LoadViewState. ////// protected virtual void OnClick(ImageMapEventArgs e) { ImageMapEventHandler clickHandler = (ImageMapEventHandler)Events[EventClick]; if (clickHandler != null) { clickHandler(this, e); } } #if SITECOUNTERS protected internal override void OnPreRender(EventArgs e) { base.OnPreRender(e); // VSWhidbey 83401: Check if the url is supported for redirect when // CountClicks is true. if (CountClicks && _hotSpots != null && _hotSpots.Count > 0) { foreach (HotSpot item in _hotSpots) { if (!UrlPath.IsPathRedirectSupported(item.NavigateUrl)) { throw new HttpException( SR.GetString( SR.SiteCounters_url_not_supported_for_redirect, item.NavigateUrl)); } } } } #endif ///Called when the user clicks the ImageMap. ////// /// protected internal override void Render(HtmlTextWriter writer) { if (Enabled && !IsEnabled) { // We need to do the cascade effect on the server, because the browser // only renders as disabled, but doesn't disable the functionality. writer.AddAttribute(HtmlTextWriterAttribute.Disabled, "disabled"); } _hasHotSpots = ((_hotSpots != null) && (_hotSpots.Count > 0)); base.Render(writer); if (_hasHotSpots) { string fullClientID = "ImageMap" + ClientID; writer.AddAttribute(HtmlTextWriterAttribute.Name, fullClientID); writer.AddAttribute(HtmlTextWriterAttribute.Id, fullClientID); writer.RenderBeginTag(HtmlTextWriterTag.Map); HotSpotMode mapMode = HotSpotMode; if (mapMode == HotSpotMode.NotSet) { mapMode = HotSpotMode.Navigate; } HotSpotMode spotMode; int hotSpotIndex = 0; string controlTarget = Target; foreach (HotSpot item in _hotSpots) { writer.AddAttribute(HtmlTextWriterAttribute.Shape, item.MarkupName, false); writer.AddAttribute(HtmlTextWriterAttribute.Coords, item.GetCoordinates()); spotMode = item.HotSpotMode; if (spotMode == HotSpotMode.NotSet) { spotMode = mapMode; } if (spotMode == HotSpotMode.PostBack) { // Make sure the page has a server side form if we are posting back if (Page != null) { Page.VerifyRenderingInServerForm(this); } string eventArgument = hotSpotIndex.ToString(CultureInfo.InvariantCulture); writer.AddAttribute(HtmlTextWriterAttribute.Href, Page.ClientScript.GetPostBackClientHyperlink(this, eventArgument, true)); } else if (spotMode == HotSpotMode.Navigate) { String resolvedUrl = ResolveClientUrl(item.NavigateUrl); #if SITECOUNTERS resolvedUrl = GetCountClickUrl(resolvedUrl); #endif writer.AddAttribute(HtmlTextWriterAttribute.Href, resolvedUrl); // Use HotSpot target first, if not specified, use ImageMap's target string target = item.Target; if (target.Length == 0) target = controlTarget; if (target.Length > 0) writer.AddAttribute(HtmlTextWriterAttribute.Target, target); } else if (spotMode == HotSpotMode.Inactive) { writer.AddAttribute("nohref", "true"); } writer.AddAttribute(HtmlTextWriterAttribute.Title, item.AlternateText); writer.AddAttribute(HtmlTextWriterAttribute.Alt, item.AlternateText); string s = item.AccessKey; if (s.Length > 0) { writer.AddAttribute(HtmlTextWriterAttribute.Accesskey, s); } int n = item.TabIndex; if (n != 0) { writer.AddAttribute(HtmlTextWriterAttribute.Tabindex, n.ToString(NumberFormatInfo.InvariantInfo)); } writer.RenderBeginTag(HtmlTextWriterTag.Area); writer.RenderEndTag(); ++hotSpotIndex; } writer.RenderEndTag(); // Map } } ///Sends server control content to a provided HtmlTextWriter, which writes the content /// to be rendered to the client. /// Overrides Control.Render. ////// protected override object SaveViewState() { object baseState = base.SaveViewState(); object hotSpotsState = null; if ((_hotSpots != null) && (_hotSpots.Count > 0)) { hotSpotsState = ((IStateManager)_hotSpots).SaveViewState(); } if ((baseState != null) || (hotSpotsState != null)) { object[] savedState = new object[2]; savedState[0] = baseState; savedState[1] = hotSpotsState; return savedState; } return null; } ///Saves any server control view-state changes that have /// occurred since the time the page was posted back to the server. /// Implements IStateManager.SaveViewState. ////// protected override void TrackViewState() { base.TrackViewState(); if (_hotSpots != null) { ((IStateManager)_hotSpots).TrackViewState(); } } #region Implementation of IPostBackEventHandler ///Causes the tracking of view-state changes to the server control. /// Implements IStateManager.TrackViewState. ////// /// void IPostBackEventHandler.RaisePostBackEvent(string eventArgument) { RaisePostBackEvent(eventArgument); } ///Notifies the server control that caused the postback that /// it should handle an incoming post back event. /// Implements IPostBackEventHandler. ////// /// protected virtual void RaisePostBackEvent(string eventArgument) { ValidateEvent(UniqueID, eventArgument); string postBackValue = null; if (eventArgument != null && _hotSpots != null) { int hotSpotIndex = Int32.Parse(eventArgument, CultureInfo.InvariantCulture); if (hotSpotIndex >= 0 && hotSpotIndex < _hotSpots.Count) { HotSpot hotSpot = _hotSpots[hotSpotIndex]; HotSpotMode mode = hotSpot.HotSpotMode; if (mode == HotSpotMode.NotSet) { mode = HotSpotMode; } if (mode == HotSpotMode.PostBack) { postBackValue = hotSpot.PostBackValue; } } } #if SITECOUNTERS SiteCounters siteCounters = Context.SiteCounters; if (siteCounters.Enabled && CountClicks) { // VSWhidbey 276548: Use HotSpot PostBackValue if available String counterName = postBackValue; if (counterName == null) { counterName = CounterName; if (counterName.Length == 0) { counterName = ID; } } siteCounters.Write(CounterGroup, counterName, SiteCounters.ClickEventText, null, TrackApplicationName, TrackPageUrl, SiteCountersProvider, RowsPerDay); } #endif // Ignore invalid indexes silently(VSWhidbey 185738) if (postBackValue != null) { OnClick(new ImageMapEventArgs(postBackValue)); } } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //Notifies the server control that caused the postback that /// it should handle an incoming post back event. /// Implements IPostBackEventHandler. ///// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.WebControls { using System; using System.ComponentModel; using System.Globalization; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.Util; using System.Web; using System.Security.Permissions; ////// [ DefaultEvent("Click"), DefaultProperty("HotSpots"), ParseChildren(true, "HotSpots"), SupportsEventValidation, ] [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] public class ImageMap : Image, IPostBackEventHandler { private static readonly object EventClick = new object(); private bool _hasHotSpots; private HotSpotCollection _hotSpots; #if SITECOUNTERS [ WebCategory("SiteCounters"), DefaultValue("ImageMap"), Themeable(false), WebSysDescription(SR.Control_For_SiteCounters_CounterGroup), ] public String CounterGroup { get { String s = (String)ViewState["CounterGroup"]; return((s == null) ? "ImageMap" : s); } set { ViewState["CounterGroup"] = value; } } ///ImageMap class. Provides support for multiple /// region-defined actions within an image. ////// [ WebCategory("SiteCounters"), DefaultValue(""), Themeable(false), WebSysDescription(SR.Control_For_SiteCounters_CounterName), ] public String CounterName { get { String s = (String)ViewState["CounterName"]; return((s == null) ? String.Empty : s); } set { ViewState["CounterName"] = value; } } [ WebCategory("SiteCounters"), DefaultValue(false), Themeable(false), WebSysDescription(SR.Control_For_SiteCounters_CountClicks), ] public bool CountClicks { get { object b = ViewState["CountClicks"]; return((b == null) ? false : (bool)b); } set { ViewState["CountClicks"] = value; } } #endif [ Browsable(true), EditorBrowsableAttribute(EditorBrowsableState.Always) ] public override bool Enabled { get { return base.Enabled; } set { base.Enabled = value; } } ///Gets or sets the target name for qualifying click-through counters. ////// [ WebCategory("Behavior"), WebSysDescription(SR.ImageMap_HotSpots), DesignerSerializationVisibility(DesignerSerializationVisibility.Content), NotifyParentProperty(true), PersistenceMode(PersistenceMode.InnerDefaultProperty) ] public HotSpotCollection HotSpots { get { if (_hotSpots == null) { _hotSpots = new HotSpotCollection(); if (IsTrackingViewState) { ((IStateManager)_hotSpots).TrackViewState(); } } return _hotSpots; } } ///Gets the HotSpotCollection with defines the regions of ImageMap hot spots. ////// [ WebCategory("Behavior"), DefaultValue(HotSpotMode.NotSet), WebSysDescription(SR.HotSpot_HotSpotMode), ] public virtual HotSpotMode HotSpotMode { get { object obj = ViewState["HotSpotMode"]; return (obj == null) ? HotSpotMode.NotSet : (HotSpotMode)obj; } set { if (value < HotSpotMode.NotSet || value > HotSpotMode.Inactive) { throw new ArgumentOutOfRangeException("value"); } ViewState["HotSpotMode"] = value; } } #if SITECOUNTERS [ WebCategory("SiteCounters"), DefaultValue(-1), Themeable(false), WebSysDescription(SR.Control_For_SiteCounters_RowsPerDay), ] public int RowsPerDay { get { Object o = ViewState["RowsPerDay"]; return((o == null) ? -1 : (int) o); } set { if (value == 0) { throw new ArgumentOutOfRangeException("value"); } ViewState["RowsPerDay"] = value; } } [ WebCategory("SiteCounters"), DefaultValue(""), Themeable(false), WebSysDescription(SR.Control_For_SiteCounters_SiteCountersProvider) ] public String SiteCountersProvider { get { String s = (String) ViewState["SiteCountersProvider"]; return((s != null) ? s : String.Empty); } set { ViewState["SiteCountersProvider"] = value; } } #endif ///Gets or sets the HotSpotMode to either postback or navigation. ////// [ WebCategory("Behavior"), DefaultValue(""), WebSysDescription(SR.HotSpot_Target), ] public virtual string Target { get { object value = ViewState["Target"]; return (value == null)? String.Empty : (string)value; } set { ViewState["Target"] = value; } } #if SITECOUNTERS [ WebCategory("SiteCounters"), DefaultValue(true), Themeable(false), WebSysDescription(SR.Control_For_SiteCounters_TrackApplicationName), ] public bool TrackApplicationName { get { object b = ViewState["TrackApplicationName"]; return((b == null) ? true : (bool)b); } set { ViewState["TrackApplicationName"] = value; } } [ WebCategory("SiteCounters"), DefaultValue(true), Themeable(false), WebSysDescription(SR.Control_For_SiteCounters_TrackNavigateUrl), ] public bool TrackNavigateUrl { get { object b = ViewState["TrackNavigateUrl"]; return((b == null) ? true : (bool)b); } set { ViewState["TrackNavigateUrl"] = value; } } [ WebCategory("SiteCounters"), DefaultValue(true), Themeable(false), WebSysDescription(SR.Control_For_SiteCounters_TrackPageUrl), ] public bool TrackPageUrl { get { object b = ViewState["TrackPageUrl"]; return((b == null) ? true : (bool)b); } set { ViewState["TrackPageUrl"] = value; } } #endif ///Gets or sets the name of the window for navigation. ////// [ Category("Action"), WebSysDescription(SR.ImageMap_Click) ] public event ImageMapEventHandler Click { add { Events.AddHandler(EventClick, value); } remove { Events.RemoveHandler(EventClick, value); } } ///The event raised when a hotspot is clicked. ////// /// protected override void AddAttributesToRender(HtmlTextWriter writer) { base.AddAttributesToRender(writer); if (_hasHotSpots) { writer.AddAttribute(HtmlTextWriterAttribute.Usemap, "#ImageMap" + ClientID, false); } } #if SITECOUNTERS internal string GetCountClickUrl(string url) { if (CountClicks && url != null && url.Length > 0) { HttpContext context = Context; SiteCounters siteCounters = (context == null) ? null : context.SiteCounters; if (siteCounters != null && siteCounters.Enabled) { String counterName = CounterName; if (counterName != null && counterName.Length == 0) { if (UrlPath.IsRelativeUrl(url)) { // Make the path absolute for data reporting counterName = UrlPath.Combine(context.Request.FilePathObject, url); } else { counterName = url; } } url = siteCounters.GetRedirectUrl( CounterGroup, counterName, SiteCounters.ClickEventText, url, TrackApplicationName, TrackPageUrl, TrackNavigateUrl, SiteCountersProvider, RowsPerDay); } } return url; } #endif ///Overridden to add the "usemap" attribute the the image tag. /// Overrides WebControl.AddAttributesToRender. ////// protected override void LoadViewState(object savedState) { object baseState = null; object[] myState = null; if (savedState != null) { myState = (object[])savedState; if (myState.Length != 2) { throw new ArgumentException(SR.GetString(SR.ViewState_InvalidViewState)); } baseState = myState[0]; } base.LoadViewState(baseState); if ((myState != null) && (myState[1] != null)) { ((IStateManager)HotSpots).LoadViewState(myState[1]); } } ///Restores view-state information that was saved by SaveViewState. /// Implements IStateManager.LoadViewState. ////// protected virtual void OnClick(ImageMapEventArgs e) { ImageMapEventHandler clickHandler = (ImageMapEventHandler)Events[EventClick]; if (clickHandler != null) { clickHandler(this, e); } } #if SITECOUNTERS protected internal override void OnPreRender(EventArgs e) { base.OnPreRender(e); // VSWhidbey 83401: Check if the url is supported for redirect when // CountClicks is true. if (CountClicks && _hotSpots != null && _hotSpots.Count > 0) { foreach (HotSpot item in _hotSpots) { if (!UrlPath.IsPathRedirectSupported(item.NavigateUrl)) { throw new HttpException( SR.GetString( SR.SiteCounters_url_not_supported_for_redirect, item.NavigateUrl)); } } } } #endif ///Called when the user clicks the ImageMap. ////// /// protected internal override void Render(HtmlTextWriter writer) { if (Enabled && !IsEnabled) { // We need to do the cascade effect on the server, because the browser // only renders as disabled, but doesn't disable the functionality. writer.AddAttribute(HtmlTextWriterAttribute.Disabled, "disabled"); } _hasHotSpots = ((_hotSpots != null) && (_hotSpots.Count > 0)); base.Render(writer); if (_hasHotSpots) { string fullClientID = "ImageMap" + ClientID; writer.AddAttribute(HtmlTextWriterAttribute.Name, fullClientID); writer.AddAttribute(HtmlTextWriterAttribute.Id, fullClientID); writer.RenderBeginTag(HtmlTextWriterTag.Map); HotSpotMode mapMode = HotSpotMode; if (mapMode == HotSpotMode.NotSet) { mapMode = HotSpotMode.Navigate; } HotSpotMode spotMode; int hotSpotIndex = 0; string controlTarget = Target; foreach (HotSpot item in _hotSpots) { writer.AddAttribute(HtmlTextWriterAttribute.Shape, item.MarkupName, false); writer.AddAttribute(HtmlTextWriterAttribute.Coords, item.GetCoordinates()); spotMode = item.HotSpotMode; if (spotMode == HotSpotMode.NotSet) { spotMode = mapMode; } if (spotMode == HotSpotMode.PostBack) { // Make sure the page has a server side form if we are posting back if (Page != null) { Page.VerifyRenderingInServerForm(this); } string eventArgument = hotSpotIndex.ToString(CultureInfo.InvariantCulture); writer.AddAttribute(HtmlTextWriterAttribute.Href, Page.ClientScript.GetPostBackClientHyperlink(this, eventArgument, true)); } else if (spotMode == HotSpotMode.Navigate) { String resolvedUrl = ResolveClientUrl(item.NavigateUrl); #if SITECOUNTERS resolvedUrl = GetCountClickUrl(resolvedUrl); #endif writer.AddAttribute(HtmlTextWriterAttribute.Href, resolvedUrl); // Use HotSpot target first, if not specified, use ImageMap's target string target = item.Target; if (target.Length == 0) target = controlTarget; if (target.Length > 0) writer.AddAttribute(HtmlTextWriterAttribute.Target, target); } else if (spotMode == HotSpotMode.Inactive) { writer.AddAttribute("nohref", "true"); } writer.AddAttribute(HtmlTextWriterAttribute.Title, item.AlternateText); writer.AddAttribute(HtmlTextWriterAttribute.Alt, item.AlternateText); string s = item.AccessKey; if (s.Length > 0) { writer.AddAttribute(HtmlTextWriterAttribute.Accesskey, s); } int n = item.TabIndex; if (n != 0) { writer.AddAttribute(HtmlTextWriterAttribute.Tabindex, n.ToString(NumberFormatInfo.InvariantInfo)); } writer.RenderBeginTag(HtmlTextWriterTag.Area); writer.RenderEndTag(); ++hotSpotIndex; } writer.RenderEndTag(); // Map } } ///Sends server control content to a provided HtmlTextWriter, which writes the content /// to be rendered to the client. /// Overrides Control.Render. ////// protected override object SaveViewState() { object baseState = base.SaveViewState(); object hotSpotsState = null; if ((_hotSpots != null) && (_hotSpots.Count > 0)) { hotSpotsState = ((IStateManager)_hotSpots).SaveViewState(); } if ((baseState != null) || (hotSpotsState != null)) { object[] savedState = new object[2]; savedState[0] = baseState; savedState[1] = hotSpotsState; return savedState; } return null; } ///Saves any server control view-state changes that have /// occurred since the time the page was posted back to the server. /// Implements IStateManager.SaveViewState. ////// protected override void TrackViewState() { base.TrackViewState(); if (_hotSpots != null) { ((IStateManager)_hotSpots).TrackViewState(); } } #region Implementation of IPostBackEventHandler ///Causes the tracking of view-state changes to the server control. /// Implements IStateManager.TrackViewState. ////// /// void IPostBackEventHandler.RaisePostBackEvent(string eventArgument) { RaisePostBackEvent(eventArgument); } ///Notifies the server control that caused the postback that /// it should handle an incoming post back event. /// Implements IPostBackEventHandler. ////// /// protected virtual void RaisePostBackEvent(string eventArgument) { ValidateEvent(UniqueID, eventArgument); string postBackValue = null; if (eventArgument != null && _hotSpots != null) { int hotSpotIndex = Int32.Parse(eventArgument, CultureInfo.InvariantCulture); if (hotSpotIndex >= 0 && hotSpotIndex < _hotSpots.Count) { HotSpot hotSpot = _hotSpots[hotSpotIndex]; HotSpotMode mode = hotSpot.HotSpotMode; if (mode == HotSpotMode.NotSet) { mode = HotSpotMode; } if (mode == HotSpotMode.PostBack) { postBackValue = hotSpot.PostBackValue; } } } #if SITECOUNTERS SiteCounters siteCounters = Context.SiteCounters; if (siteCounters.Enabled && CountClicks) { // VSWhidbey 276548: Use HotSpot PostBackValue if available String counterName = postBackValue; if (counterName == null) { counterName = CounterName; if (counterName.Length == 0) { counterName = ID; } } siteCounters.Write(CounterGroup, counterName, SiteCounters.ClickEventText, null, TrackApplicationName, TrackPageUrl, SiteCountersProvider, RowsPerDay); } #endif // Ignore invalid indexes silently(VSWhidbey 185738) if (postBackValue != null) { OnClick(new ImageMapEventArgs(postBackValue)); } } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.Notifies the server control that caused the postback that /// it should handle an incoming post back event. /// Implements IPostBackEventHandler. ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PresentationSource.cs
- QuaternionConverter.cs
- DbBuffer.cs
- SafeRightsManagementQueryHandle.cs
- NumericUpDownAcceleration.cs
- WindowsAuthenticationEventArgs.cs
- SortAction.cs
- BinaryObjectReader.cs
- OleDbPropertySetGuid.cs
- Header.cs
- StringConverter.cs
- DatePicker.cs
- CodeTypeDeclaration.cs
- TextCharacters.cs
- OleDbPropertySetGuid.cs
- PropertyEmitter.cs
- Canvas.cs
- SchemaImporterExtension.cs
- BitConverter.cs
- FlowLayoutSettings.cs
- SqlDataSourceCache.cs
- OpCopier.cs
- LicFileLicenseProvider.cs
- CheckBoxBaseAdapter.cs
- HyperlinkAutomationPeer.cs
- SafeNativeMethods.cs
- FixedSOMFixedBlock.cs
- AttributedMetaModel.cs
- AllowedAudienceUriElementCollection.cs
- MarkerProperties.cs
- CmsUtils.cs
- CoreSwitches.cs
- DataGridViewSortCompareEventArgs.cs
- ExtendedProtectionPolicy.cs
- IDispatchConstantAttribute.cs
- DialogWindow.cs
- ProcessInputEventArgs.cs
- CFGGrammar.cs
- ReadOnlyHierarchicalDataSource.cs
- ControlCachePolicy.cs
- RuntimeHelpers.cs
- RestHandlerFactory.cs
- ImageInfo.cs
- SynchronizationLockException.cs
- MimeTypeMapper.cs
- TextBoxLine.cs
- XPathConvert.cs
- DataSourceSelectArguments.cs
- path.cs
- ElementMarkupObject.cs
- MessageDroppedTraceRecord.cs
- RayHitTestParameters.cs
- AstNode.cs
- ScriptingSectionGroup.cs
- RelationshipConstraintValidator.cs
- XMLSyntaxException.cs
- D3DImage.cs
- CookielessHelper.cs
- NeedSkipTokenVisitor.cs
- DiagnosticTraceSchemas.cs
- Win32Exception.cs
- CSharpCodeProvider.cs
- ProfileInfo.cs
- UnsupportedPolicyOptionsException.cs
- BindingWorker.cs
- BindingWorker.cs
- ParserContext.cs
- TdsParserSafeHandles.cs
- RowBinding.cs
- DependencyObjectCodeDomSerializer.cs
- BaseDataListDesigner.cs
- DivideByZeroException.cs
- SizeFConverter.cs
- ThreadInterruptedException.cs
- ContextMenu.cs
- TrackingLocation.cs
- DescendantOverDescendantQuery.cs
- ObjectNotFoundException.cs
- TraceLevelHelper.cs
- QuaternionRotation3D.cs
- ReturnType.cs
- XD.cs
- ObfuscationAttribute.cs
- DispatcherSynchronizationContext.cs
- DesignerSerializationOptionsAttribute.cs
- RC2.cs
- FieldInfo.cs
- HorizontalAlignConverter.cs
- TimeSpanFormat.cs
- RouteItem.cs
- XmlSchemaSimpleType.cs
- Point4D.cs
- DeferredElementTreeState.cs
- ToolStripSystemRenderer.cs
- PerspectiveCamera.cs
- MetadataArtifactLoader.cs
- TypeExtensionConverter.cs
- MethodBody.cs
- WebConvert.cs
- PeerEndPoint.cs