我有一个客户用来集成的webapi。我们使用FromUri和FromBody参数来获取复杂的对象
在FromUri上我有一个自定义绑定器,允许客户端使用备用名称发送数据。因此,例如,他们将在查询字符串中发送FN = Bob,并将映射到复杂对象中的FirstName属性。 (以这种方式实现Bind Alias Attribute),这使用自定义模型绑定器.. [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[] { });
}
}
非常感谢任何帮助或指示。