WebApi参数绑定

时间:2016-08-15 10:43:20

标签: c# asp.net-web-api modelbinders

我有一个客户用来集成的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[] { });
            }
        }

非常感谢任何帮助或指示。

0 个答案:

没有答案