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
プロパティを見ると、bindingContext
私は見るだけで、データが本文にある場合は取得できないことを意味すると思います。これはどのようにすればよいですか?jsonまたはフォームエンコードのいずれかとしてデータを投稿することをサポートしたいと思います。QueryStringValueProvider
RouteDataValueProvider