// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information. using System.Collections.Generic; using System.Web.Http.Controllers; using System.Web.Http.Internal; using System.Web.Http.Metadata; namespace System.Web.Http.ModelBinding.Binders { public sealed class KeyValuePairModelBinder : IModelBinder { internal ModelMetadataProvider MetadataProvider { private get; set; } public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext) { ModelMetadataProvider metadataProvider = MetadataProvider ?? actionContext.GetMetadataProvider(); ModelBindingHelper.ValidateBindingContext(bindingContext, typeof(KeyValuePair), true /* allowNullModel */); TKey key; bool keyBindingSucceeded = actionContext.TryBindStrongModel(bindingContext, "key", metadataProvider, out key); TValue value; bool valueBindingSucceeded = actionContext.TryBindStrongModel(bindingContext, "value", metadataProvider, out value); if (keyBindingSucceeded && valueBindingSucceeded) { bindingContext.Model = new KeyValuePair(key, value); } return keyBindingSucceeded || valueBindingSucceeded; } } }