Мне нужно реализовать привязку пользовательской модели, поэтому я пытаюсь реализовать приложение IModelBinder
для .Net Core 2.1 API
.
Model
класс -
[ModelBinder(BinderType = typeof(PersonBinder))]
public class Person
{
public name {get;set;}
public address {get;set;}
}
API
метод -
[HttpPost]
[Route("process")]
public async Task<ActionResult<int>> ProcessAsync([ModelBinder(typeof(PersonBinder))]Person person)
{
...
}
Метод модели связывания -
public Task BindModelAsync(ModelBindingContext bindingContext)
{
var modelName = bindingContext.ModelName; //modelName is empty string
...
}
В запросе почтальона, который я использую для тестирования, есть объект JSON
в body
, и простейшая форма выглядит следующим образом -
{
"name": "name1"
"address": "address1"
}
Обратите внимание, что этот запрос исходит от существующего устаревшего клиента, который я не могу контролировать, и объект JSON
, который будет представлен как тело в POST
, не будет иметь имени.
В QuickWatch
в VisualStudio
я также вижу, что bindingContext.ValueProvider.Count is 1
и bindingContext.ModelMetadata
имеют Parameter
из person
и Type
из Person
и bindingContext.FieldName
равно person
. И на удивление bindingProvider.Result
это Failed
и bindingContext.ModelName
всегда String.Empty
Может кто-нибудь, пожалуйста, помогите мне получить ModelName
от BindingContext
. И если в этой ситуации нет способа получить ModelName
, то как я могу прочитать объект Person
из BindingContext
?