Imported Upstream version 4.0.0~alpha1

Former-commit-id: 806294f5ded97629b74c85c09952f2a74fe182d9
This commit is contained in:
Jo Shields
2015-04-07 09:35:12 +01:00
parent 283343f570
commit 3c1f479b9d
22469 changed files with 2931443 additions and 869343 deletions

View File

@ -0,0 +1,50 @@
using System.Globalization;
namespace System.Web.ModelBinding {
/// <summary>
/// This value provider supports single key-value lookup.
/// SimpleValueProvider itself is unaware of actual look-up mechanism and delegates to child classes using the FetchValue method.
/// Example simple value providers are ViewStateValueProvider and ControlValueProvider.
/// </summary>
public abstract class SimpleValueProvider : IValueProvider {
private CultureInfo _cultureInfo;
protected ModelBindingExecutionContext ModelBindingExecutionContext {
get;
private set;
}
protected SimpleValueProvider(ModelBindingExecutionContext modelBindingExecutionContext)
: this(modelBindingExecutionContext, CultureInfo.CurrentCulture) {
}
protected SimpleValueProvider(ModelBindingExecutionContext modelBindingExecutionContext, CultureInfo cultureInfo) {
ModelBindingExecutionContext = modelBindingExecutionContext;
_cultureInfo = cultureInfo;
}
public virtual bool ContainsPrefix(string prefix) {
if (prefix == null) {
throw new ArgumentNullException("prefix");
}
return FetchValue(prefix) != null;
}
public virtual ValueProviderResult GetValue(string key) {
if (key == null) {
throw new ArgumentNullException("key");
}
object rawValue = FetchValue(key);
if (rawValue == null) {
return null;
}
string attemptedValue = Convert.ToString(rawValue, _cultureInfo);
return new ValueProviderResult(rawValue, attemptedValue, _cultureInfo);
}
protected abstract object FetchValue(string key);
}
}