69 lines
2.4 KiB
C#
69 lines
2.4 KiB
C#
/* ****************************************************************************
|
|
*
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
*
|
|
* This software is subject to the Microsoft Public License (Ms-PL).
|
|
* A copy of the license can be found in the license.htm file included
|
|
* in this distribution.
|
|
*
|
|
* You must not remove this notice, or any other, from this software.
|
|
*
|
|
* ***************************************************************************/
|
|
|
|
namespace System.Web.Mvc {
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.Specialized;
|
|
using System.Globalization;
|
|
using System.Linq;
|
|
|
|
public class NameValueCollectionValueProvider : IValueProvider {
|
|
|
|
private readonly HashSet<string> _prefixes = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
|
|
private readonly Dictionary<string, ValueProviderResult> _values = new Dictionary<string, ValueProviderResult>(StringComparer.OrdinalIgnoreCase);
|
|
|
|
public NameValueCollectionValueProvider(NameValueCollection collection, CultureInfo culture) {
|
|
if (collection == null) {
|
|
throw new ArgumentNullException("collection");
|
|
}
|
|
|
|
AddValues(collection, culture);
|
|
}
|
|
|
|
private void AddValues(NameValueCollection collection, CultureInfo culture) {
|
|
if (collection.Count > 0) {
|
|
_prefixes.Add("");
|
|
}
|
|
|
|
foreach (string key in collection) {
|
|
if (key != null) {
|
|
_prefixes.UnionWith(ValueProviderUtil.GetPrefixes(key));
|
|
|
|
string[] rawValue = collection.GetValues(key);
|
|
string attemptedValue = collection[key];
|
|
_values[key] = new ValueProviderResult(rawValue, attemptedValue, culture);
|
|
}
|
|
}
|
|
}
|
|
|
|
public virtual bool ContainsPrefix(string prefix) {
|
|
if (prefix == null) {
|
|
throw new ArgumentNullException("prefix");
|
|
}
|
|
|
|
return _prefixes.Contains(prefix);
|
|
}
|
|
|
|
public virtual ValueProviderResult GetValue(string key) {
|
|
if (key == null) {
|
|
throw new ArgumentNullException("key");
|
|
}
|
|
|
|
ValueProviderResult vpResult;
|
|
_values.TryGetValue(key, out vpResult);
|
|
return vpResult;
|
|
}
|
|
|
|
}
|
|
}
|