Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / DynamicData / DynamicData / QueryStringHandler.cs / 1305376 / QueryStringHandler.cs
using System.Collections.Generic; using System.Collections.Specialized; using System.Globalization; using System.Text; using System.Web.Resources; namespace System.Web.DynamicData { internal static class QueryStringHandler { public static string AddFiltersToPath(string virtualPath, IDictionaryfilters) { if (String.IsNullOrEmpty(virtualPath)) throw new ArgumentException( String.Format(CultureInfo.CurrentCulture, DynamicDataResources.QueryStringHandler_VirtualPathCannotBeEmpty), "virtualPath"); if (filters == null) throw new ArgumentNullException("filters"); string queryString = ConcatenateQueryStringElements(filters); if (String.IsNullOrEmpty(queryString)) return virtualPath; StringBuilder result = new StringBuilder(virtualPath); if (!virtualPath.Contains("?")) { result.Append('?'); } else { if (!virtualPath.EndsWith("?", StringComparison.Ordinal) && !virtualPath.EndsWith("&", StringComparison.Ordinal)) { result.Append('&'); } } result.Append(queryString); return result.ToString(); } private static string ConcatenateQueryStringElements(IDictionary parameters) { if (parameters.Count == 0) { return String.Empty; } StringBuilder result = new StringBuilder(); bool firstParam = true; foreach (String s in parameters.Keys) { if (!String.IsNullOrEmpty(s)) { string key = SanitizeParameterComponent(s); string value = SanitizeParameterComponent(parameters[s]); if (firstParam) firstParam = false; else result.Append('&'); result.Append(key); result.Append('='); result.Append(value); } } return result.ToString(); } private static string SanitizeParameterComponent(object value) { if (value == null) return String.Empty; string strValue = value.ToString(); // Trim trailing spaces, as they are typically meaningless, and make the url look ugly strValue = strValue.TrimEnd(); return Uri.EscapeDataString(strValue); } } } // 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
- WebPartCancelEventArgs.cs
- DiscreteKeyFrames.cs
- MasterPageBuildProvider.cs
- LineSegment.cs
- BindingList.cs
- TextPenaltyModule.cs
- ScalarType.cs
- FamilyTypefaceCollection.cs
- DbParameterHelper.cs
- FixedPage.cs
- ParseChildrenAsPropertiesAttribute.cs
- TraceSwitch.cs
- SystemIPGlobalProperties.cs
- RegexInterpreter.cs
- ArrangedElementCollection.cs
- OracleConnectionStringBuilder.cs
- CalendarDay.cs
- DataGridViewCellStateChangedEventArgs.cs
- WebUtility.cs
- MouseButton.cs
- NamespaceList.cs
- PointLight.cs
- httpapplicationstate.cs
- FileDialog_Vista_Interop.cs
- TextFormatterHost.cs
- MaskedTextProvider.cs
- ContextMenuService.cs
- TextCollapsingProperties.cs
- InkCanvasSelectionAdorner.cs
- GeneralTransformCollection.cs
- Rotation3D.cs
- HwndSourceParameters.cs
- LZCodec.cs
- TextDocumentView.cs
- BuildProviderCollection.cs
- DotNetATv1WindowsLogEntrySerializer.cs
- InternalReceiveMessage.cs
- ReferenceEqualityComparer.cs
- DelegateArgumentValue.cs
- PkcsUtils.cs
- AnnotationDocumentPaginator.cs
- SQLResource.cs
- templategroup.cs
- EntityReference.cs
- ListSourceHelper.cs
- CommandBindingCollection.cs
- BindingBase.cs
- PathTooLongException.cs
- GAC.cs
- PopupControlService.cs
- IsolatedStorageFilePermission.cs
- XamlFilter.cs
- PenContext.cs
- COM2ExtendedBrowsingHandler.cs
- GenericsInstances.cs
- Mutex.cs
- ParameterElement.cs
- InfocardInteractiveChannelInitializer.cs
- BufferedResponseStream.cs
- TitleStyle.cs
- BlobPersonalizationState.cs
- FormViewDeletedEventArgs.cs
- HttpListenerPrefixCollection.cs
- EventLogEntryCollection.cs
- PowerModeChangedEventArgs.cs
- SafeRightsManagementQueryHandle.cs
- AliasGenerator.cs
- keycontainerpermission.cs
- DataServiceExpressionVisitor.cs
- GcHandle.cs
- PhonemeEventArgs.cs
- XamlBrushSerializer.cs
- InlineObject.cs
- StateDesigner.Helpers.cs
- WmlCommandAdapter.cs
- ProcessingInstructionAction.cs
- TimeZone.cs
- ControlBuilderAttribute.cs
- VectorValueSerializer.cs
- TextTreeTextElementNode.cs
- LiteralSubsegment.cs
- DataGridView.cs
- AccessControlEntry.cs
- SessionStateContainer.cs
- FlatButtonAppearance.cs
- _StreamFramer.cs
- ObjRef.cs
- TextAction.cs
- JavaScriptObjectDeserializer.cs
- DebugView.cs
- XPathAncestorQuery.cs
- FloaterParaClient.cs
- SplashScreen.cs
- SupportsEventValidationAttribute.cs
- TrustManagerPromptUI.cs
- DocumentApplication.cs
- MatchAttribute.cs
- FontEmbeddingManager.cs
- PageThemeBuildProvider.cs
- Pointer.cs