Привязка параметров WebApi
У меня есть webapi, который клиенты используют для интеграции. Мы используем параметры FromUri и FromBody, которые принимают сложные объекты
На FromUri у меня есть пользовательское связующее, которое позволяет клиентам отправлять данные с альтернативными именами. Так, например, они отправили бы FN=Bob в строке запроса, и это сопоставило бы свойству FirstName в сложном объекте. (реализовано таким образом: атрибут связывания псевдонима), здесь используется настраиваемое связывание модели, как показано ниже. [FromUri(BinderType = typeof(CustomAliasModelBinder))]
Теперь моя проблема связана с параметром FromBody. Есть ли способ использовать привязку пользовательской модели в атрибуте FromBody? Я пытался использовать [ModelBinder(typeof(CustomAliasModelBinder))] и все виды, чтобы связать его.
Если я отправляю полное имя для каждого поля (таким образом, отправляя firstname=Bob вместо FN=Bob), все работает, как и ожидалось, используя стандартный [FromBody], но мне действительно нужно, чтобы он проходил через пользовательское связующее. Я пытался получить провайдеров значений и RouteData, но у меня ничего не получится, поскольку провайдер значений всегда нулевой. (пример ниже)
foreach (var property in bindingContext.PropertyMetadata)
{
var valueProvider = bindingContext.ValueProvider.GetValue(property.Key);
if (valueProvider != null)
{
var value = valueProvider.ConvertTo(property.Value.ModelType);
var pInfo = bindingContext.ModelType.GetProperty(property.Key);
pInfo.SetValue(model, value, new object[] { });
}
}
Любая помощь или указатели будут высоко оценены.