Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / xsp / System / Web / HttpValueCollection.cs / 1 / HttpValueCollection.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
* Ordered String/String[] collection of name/value pairs
* Based on NameValueCollection -- adds parsing from string, cookie collection
*
* Copyright (c) 2000 Microsoft Corporation
*/
namespace System.Web {
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters;
using System.Text;
using System.Runtime.InteropServices;
using System.Collections;
using System.Collections.Specialized;
using System.Globalization;
using System.Web.Util;
using System.Web.UI;
[Serializable()]
internal class HttpValueCollection : NameValueCollection {
internal HttpValueCollection(): base(StringComparer.OrdinalIgnoreCase) {
}
#if UNUSED_CODE
internal HttpValueCollection(String str) : this(str, false, false, Encoding.UTF8) {
}
internal HttpValueCollection(String str, bool readOnly) : this(str, readOnly, false, Encoding.UTF8) {
}
#endif
internal HttpValueCollection(String str, bool readOnly, bool urlencoded, Encoding encoding): base(StringComparer.OrdinalIgnoreCase) {
if (!String.IsNullOrEmpty(str))
FillFromString(str, urlencoded, encoding);
IsReadOnly = readOnly;
}
internal HttpValueCollection(int capacity) : base(capacity, StringComparer.OrdinalIgnoreCase) {
}
#if UNUSED_CODE
internal HttpValueCollection(int capacity, String str) : this(capacity, str, false, false, Encoding.UTF8) {
}
internal HttpValueCollection(int capacity, String str, bool readOnly) : this(capacity, str, readOnly, false, Encoding.UTF8) {
}
internal HttpValueCollection(int capacity, String str, bool readOnly, bool urlencoded, Encoding encoding) : base(capacity, StringComparer.OrdinalIgnoreCase) {
if (!String.IsNullOrEmpty(str))
FillFromString(str, urlencoded, encoding);
IsReadOnly = readOnly;
}
#endif
protected HttpValueCollection(SerializationInfo info, StreamingContext context) : base(info, context) {
}
internal void MakeReadOnly() {
IsReadOnly = true;
}
internal void MakeReadWrite() {
IsReadOnly = false;
}
internal void FillFromString(String s) {
FillFromString(s, false, null);
}
internal void FillFromString(String s, bool urlencoded, Encoding encoding) {
int l = (s != null) ? s.Length : 0;
int i = 0;
while (i < l) {
// find next & while noting first = on the way (and if there are more)
int si = i;
int ti = -1;
while (i < l) {
char ch = s[i];
if (ch == '=') {
if (ti < 0)
ti = i;
}
else if (ch == '&') {
break;
}
i++;
}
// extract the name / value pair
String name = null;
String value = null;
if (ti >= 0) {
name = s.Substring(si, ti-si);
value = s.Substring(ti+1, i-ti-1);
}
else {
value = s.Substring(si, i-si);
}
// add name / value pair to the collection
if (urlencoded)
base.Add(
HttpUtility.UrlDecode(name, encoding),
HttpUtility.UrlDecode(value, encoding));
else
base.Add(name, value);
// trailing '&'
if (i == l-1 && s[i] == '&')
base.Add(null, String.Empty);
i++;
}
}
internal void FillFromEncodedBytes(byte[] bytes, Encoding encoding) {
int l = (bytes != null) ? bytes.Length : 0;
int i = 0;
while (i < l) {
// find next & while noting first = on the way (and if there are more)
int si = i;
int ti = -1;
while (i < l) {
byte b = bytes[i];
if (b == '=') {
if (ti < 0)
ti = i;
}
else if (b == '&') {
break;
}
i++;
}
// extract the name / value pair
String name, value;
if (ti >= 0) {
name = HttpUtility.UrlDecode(bytes, si, ti-si, encoding);
value = HttpUtility.UrlDecode(bytes, ti+1, i-ti-1, encoding);
}
else {
name = null;
value = HttpUtility.UrlDecode(bytes, si, i-si, encoding);
}
// add name / value pair to the collection
base.Add(name, value);
// trailing '&'
if (i == l-1 && bytes[i] == '&')
base.Add(null, String.Empty);
i++;
}
}
internal void Add(HttpCookieCollection c) {
int n = c.Count;
for (int i = 0; i < n; i++) {
HttpCookie cookie = c.Get(i);
base.Add(cookie.Name, cookie.Value);
}
}
internal void Reset() {
base.Clear();
}
public override String ToString() {
return ToString(true);
}
internal virtual String ToString(bool urlencoded) {
return ToString(urlencoded, null);
}
internal virtual String ToString(bool urlencoded, IDictionary excludeKeys) {
int n = Count;
if (n == 0)
return String.Empty;
StringBuilder s = new StringBuilder();
String key, keyPrefix, item;
bool ignoreViewStateKeys = (excludeKeys != null && excludeKeys[Page.ViewStateFieldPrefixID] != null);
for (int i = 0; i < n; i++) {
key = GetKey(i);
// Review: improve this... Special case hack for __VIEWSTATE#
if (ignoreViewStateKeys && key != null && key.StartsWith(Page.ViewStateFieldPrefixID, StringComparison.Ordinal)) continue;
if (excludeKeys != null && key != null && excludeKeys[key] != null)
continue;
if (urlencoded)
key = HttpUtility.UrlEncodeUnicode(key);
keyPrefix = (!String.IsNullOrEmpty(key)) ? (key + "=") : String.Empty;
ArrayList values = (ArrayList)BaseGet(i);
int numValues = (values != null) ? values.Count : 0;
if (s.Length > 0)
s.Append('&');
if (numValues == 1) {
s.Append(keyPrefix);
item = (String)values[0];
if (urlencoded)
item = HttpUtility.UrlEncodeUnicode(item);
s.Append(item);
}
else if (numValues == 0) {
s.Append(keyPrefix);
}
else {
for (int j = 0; j < numValues; j++) {
if (j > 0)
s.Append('&');
s.Append(keyPrefix);
item = (String)values[j];
if (urlencoded)
item = HttpUtility.UrlEncodeUnicode(item);
s.Append(item);
}
}
}
return s.ToString();
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
* Ordered String/String[] collection of name/value pairs
* Based on NameValueCollection -- adds parsing from string, cookie collection
*
* Copyright (c) 2000 Microsoft Corporation
*/
namespace System.Web {
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters;
using System.Text;
using System.Runtime.InteropServices;
using System.Collections;
using System.Collections.Specialized;
using System.Globalization;
using System.Web.Util;
using System.Web.UI;
[Serializable()]
internal class HttpValueCollection : NameValueCollection {
internal HttpValueCollection(): base(StringComparer.OrdinalIgnoreCase) {
}
#if UNUSED_CODE
internal HttpValueCollection(String str) : this(str, false, false, Encoding.UTF8) {
}
internal HttpValueCollection(String str, bool readOnly) : this(str, readOnly, false, Encoding.UTF8) {
}
#endif
internal HttpValueCollection(String str, bool readOnly, bool urlencoded, Encoding encoding): base(StringComparer.OrdinalIgnoreCase) {
if (!String.IsNullOrEmpty(str))
FillFromString(str, urlencoded, encoding);
IsReadOnly = readOnly;
}
internal HttpValueCollection(int capacity) : base(capacity, StringComparer.OrdinalIgnoreCase) {
}
#if UNUSED_CODE
internal HttpValueCollection(int capacity, String str) : this(capacity, str, false, false, Encoding.UTF8) {
}
internal HttpValueCollection(int capacity, String str, bool readOnly) : this(capacity, str, readOnly, false, Encoding.UTF8) {
}
internal HttpValueCollection(int capacity, String str, bool readOnly, bool urlencoded, Encoding encoding) : base(capacity, StringComparer.OrdinalIgnoreCase) {
if (!String.IsNullOrEmpty(str))
FillFromString(str, urlencoded, encoding);
IsReadOnly = readOnly;
}
#endif
protected HttpValueCollection(SerializationInfo info, StreamingContext context) : base(info, context) {
}
internal void MakeReadOnly() {
IsReadOnly = true;
}
internal void MakeReadWrite() {
IsReadOnly = false;
}
internal void FillFromString(String s) {
FillFromString(s, false, null);
}
internal void FillFromString(String s, bool urlencoded, Encoding encoding) {
int l = (s != null) ? s.Length : 0;
int i = 0;
while (i < l) {
// find next & while noting first = on the way (and if there are more)
int si = i;
int ti = -1;
while (i < l) {
char ch = s[i];
if (ch == '=') {
if (ti < 0)
ti = i;
}
else if (ch == '&') {
break;
}
i++;
}
// extract the name / value pair
String name = null;
String value = null;
if (ti >= 0) {
name = s.Substring(si, ti-si);
value = s.Substring(ti+1, i-ti-1);
}
else {
value = s.Substring(si, i-si);
}
// add name / value pair to the collection
if (urlencoded)
base.Add(
HttpUtility.UrlDecode(name, encoding),
HttpUtility.UrlDecode(value, encoding));
else
base.Add(name, value);
// trailing '&'
if (i == l-1 && s[i] == '&')
base.Add(null, String.Empty);
i++;
}
}
internal void FillFromEncodedBytes(byte[] bytes, Encoding encoding) {
int l = (bytes != null) ? bytes.Length : 0;
int i = 0;
while (i < l) {
// find next & while noting first = on the way (and if there are more)
int si = i;
int ti = -1;
while (i < l) {
byte b = bytes[i];
if (b == '=') {
if (ti < 0)
ti = i;
}
else if (b == '&') {
break;
}
i++;
}
// extract the name / value pair
String name, value;
if (ti >= 0) {
name = HttpUtility.UrlDecode(bytes, si, ti-si, encoding);
value = HttpUtility.UrlDecode(bytes, ti+1, i-ti-1, encoding);
}
else {
name = null;
value = HttpUtility.UrlDecode(bytes, si, i-si, encoding);
}
// add name / value pair to the collection
base.Add(name, value);
// trailing '&'
if (i == l-1 && bytes[i] == '&')
base.Add(null, String.Empty);
i++;
}
}
internal void Add(HttpCookieCollection c) {
int n = c.Count;
for (int i = 0; i < n; i++) {
HttpCookie cookie = c.Get(i);
base.Add(cookie.Name, cookie.Value);
}
}
internal void Reset() {
base.Clear();
}
public override String ToString() {
return ToString(true);
}
internal virtual String ToString(bool urlencoded) {
return ToString(urlencoded, null);
}
internal virtual String ToString(bool urlencoded, IDictionary excludeKeys) {
int n = Count;
if (n == 0)
return String.Empty;
StringBuilder s = new StringBuilder();
String key, keyPrefix, item;
bool ignoreViewStateKeys = (excludeKeys != null && excludeKeys[Page.ViewStateFieldPrefixID] != null);
for (int i = 0; i < n; i++) {
key = GetKey(i);
// Review: improve this... Special case hack for __VIEWSTATE#
if (ignoreViewStateKeys && key != null && key.StartsWith(Page.ViewStateFieldPrefixID, StringComparison.Ordinal)) continue;
if (excludeKeys != null && key != null && excludeKeys[key] != null)
continue;
if (urlencoded)
key = HttpUtility.UrlEncodeUnicode(key);
keyPrefix = (!String.IsNullOrEmpty(key)) ? (key + "=") : String.Empty;
ArrayList values = (ArrayList)BaseGet(i);
int numValues = (values != null) ? values.Count : 0;
if (s.Length > 0)
s.Append('&');
if (numValues == 1) {
s.Append(keyPrefix);
item = (String)values[0];
if (urlencoded)
item = HttpUtility.UrlEncodeUnicode(item);
s.Append(item);
}
else if (numValues == 0) {
s.Append(keyPrefix);
}
else {
for (int j = 0; j < numValues; j++) {
if (j > 0)
s.Append('&');
s.Append(keyPrefix);
item = (String)values[j];
if (urlencoded)
item = HttpUtility.UrlEncodeUnicode(item);
s.Append(item);
}
}
}
return s.ToString();
}
}
}
// 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
- SQLInt64Storage.cs
- QuotedStringFormatReader.cs
- elementinformation.cs
- CharacterMetrics.cs
- SystemInfo.cs
- ReadContentAsBinaryHelper.cs
- RadioButtonFlatAdapter.cs
- TimeZone.cs
- EventHandlerList.cs
- PackageDigitalSignature.cs
- MD5Cng.cs
- SoapClientMessage.cs
- Config.cs
- JpegBitmapDecoder.cs
- HandleCollector.cs
- MetadataItemCollectionFactory.cs
- SafeCryptContextHandle.cs
- StringFunctions.cs
- SqlNode.cs
- StreamAsIStream.cs
- EventRouteFactory.cs
- CountdownEvent.cs
- printdlgexmarshaler.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- URLString.cs
- ClientScriptManager.cs
- RewritingValidator.cs
- ChineseLunisolarCalendar.cs
- StateManagedCollection.cs
- WebServicesInteroperability.cs
- XmlFormatExtensionAttribute.cs
- XamlInt32CollectionSerializer.cs
- SurrogateSelector.cs
- UDPClient.cs
- StringCollection.cs
- RelationshipWrapper.cs
- GeometryValueSerializer.cs
- StateMachineHelpers.cs
- CopyOfAction.cs
- XslTransform.cs
- _AutoWebProxyScriptHelper.cs
- SQLUtility.cs
- ApplicationManager.cs
- ToolStripContextMenu.cs
- HttpCachePolicyElement.cs
- ClientConfigurationHost.cs
- SqlXmlStorage.cs
- MarginCollapsingState.cs
- MSAAEventDispatcher.cs
- TextEffectCollection.cs
- securestring.cs
- PeerTransportBindingElement.cs
- IxmlLineInfo.cs
- Matrix3DStack.cs
- Expression.cs
- SvcMapFileSerializer.cs
- TemporaryBitmapFile.cs
- WebPartTransformerCollection.cs
- RecordManager.cs
- CachedFontFace.cs
- CacheMode.cs
- FlowDocumentPaginator.cs
- ConfigurationLocation.cs
- SByteConverter.cs
- NamedPipeAppDomainProtocolHandler.cs
- EntityDataSourceContextDisposingEventArgs.cs
- DiffuseMaterial.cs
- InvokePattern.cs
- SqlTopReducer.cs
- _NegoState.cs
- TextElementEditingBehaviorAttribute.cs
- NegotiationTokenAuthenticatorState.cs
- HtmlInputReset.cs
- DataSourceExpressionCollection.cs
- CountdownEvent.cs
- LongValidator.cs
- WindowsTreeView.cs
- FileDialogPermission.cs
- UnsettableComboBox.cs
- CalendarAutomationPeer.cs
- LogWriteRestartAreaAsyncResult.cs
- SmtpLoginAuthenticationModule.cs
- TextBlockAutomationPeer.cs
- PersonalizationStateQuery.cs
- Clock.cs
- ResourceProperty.cs
- CodeAttributeArgument.cs
- ServiceBusyException.cs
- ViewManagerAttribute.cs
- CopyNamespacesAction.cs
- UIElementAutomationPeer.cs
- FamilyTypeface.cs
- DummyDataSource.cs
- UiaCoreTypesApi.cs
- HttpStaticObjectsCollectionBase.cs
- ShaderRenderModeValidation.cs
- RegistrationServices.cs
- SelectionPattern.cs
- DataSourceView.cs
- SmiGettersStream.cs