我一直在尝试使用模型绑定来使我们的 API 更易于使用。使用 API 时,当数据在正文中时,我无法让模型绑定绑定,只有当它是查询的一部分时。
我的代码是:
public class FunkyModelBinder : IModelBinder
{
public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext)
{
var model = (Funky) bindingContext.Model ?? new Funky();
var hasPrefix = bindingContext.ValueProvider
.ContainsPrefix(bindingContext.ModelName);
var searchPrefix = (hasPrefix) ? bindingContext.ModelName + "." : "";
model.Funk = GetValue(bindingContext, searchPrefix, "Funk");
bindingContext.Model = model;
return true;
}
private string GetValue(ModelBindingContext context, string prefix, string key)
{
var result = context.ValueProvider.GetValue(prefix + key);
return result == null ? null : result.AttemptedValue;
}
}
当查看我只看到的ValueProvider
属性时,我认为这意味着如果数据在正文中,我将不会得到它。我该怎么做?我想支持以 json 或表单编码的形式发布数据。bindingContext
QueryStringValueProvider
RouteDataValueProvider