Вы помещаете вашу модель в анонимный объект, который превратит его представление JSON во что-то, что не имеет ничего общего с вашим исходным классом Client
.
Это:
var clientData = new IdentityServer4.Models.Client();
var client = new { client = clientData };
client.client.ClientName = clientName;
var json = JsonConvert.SerializeObject(client);
Результатом будет JSON, подобный следующему:
{
"client": {
"clientName": "foo",
"anotherProperty": "bar",
// other properties omitted for brevity
}
}
Но то, что вы действительно хотите, это просто Client
объект:
{
"clientName": "foo",
"anotherProperty": "bar",
// other properties omitted for brevity
}
Не оборачивайте ваш clientData
, просто сериализуйте его напрямую, чтобы следовать модели внутри вашего MVC Action Method:
var clientData = new IdentityServer4.Models.Client();
clientData.ClientName = clientName;
var json = JsonConvert.SerializeObject(clientData);
Чтобы все работало, вы должны явно указать связующему, где ожидать данные.
Использовать атрибут [FromBody]
на модели.
[FromBody]
: использовать настроенные средства форматирования для привязки данных из тела запроса. Форматер выбирается в зависимости от типа содержимого запроса.
[HttpPost]
public IActionResult Post([FromBody]IdentityServer4.Models.Client client) {
return Json(new { result = true });
}
Ссылка Связывание модели в ASP.NET Core