// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using System.Threading.Tasks; using Microsoft.Framework.Internal; namespace Microsoft.AspNet.Mvc.ModelBinding { /// /// An for form data stored in an . /// public class JQueryFormValueProvider : BindingSourceValueProvider, IEnumerableValueProvider { private PrefixContainer _prefixContainer; private readonly IDictionary _values; /// /// Initializes a new instance of the class. /// /// The of the data. /// A delegate which provides the values to wrap. /// The culture to return with ValueProviderResult instances. public JQueryFormValueProvider( [NotNull] BindingSource bindingSource, [NotNull] IDictionary values, CultureInfo culture) : base(bindingSource) { _values = values; Culture = culture; } // Internal for testing internal CultureInfo Culture { get; } protected PrefixContainer PrefixContainer { get { if (_prefixContainer == null) { _prefixContainer = new PrefixContainer(_values.Keys); } return _prefixContainer; } } /// public override bool ContainsPrefix(string prefix) { return PrefixContainer.ContainsPrefix(prefix); } /// public IDictionary GetKeysFromPrefix(string prefix) { return PrefixContainer.GetKeysFromPrefix(prefix); } /// public override ValueProviderResult GetValue(string key) { string[] values; if (_values.TryGetValue(key, out values) && values != null && values.Length > 0) { return new ValueProviderResult(values, Culture); } return ValueProviderResult.None; } } }