S
S
Saharman2018-10-24 14:41:25
ASP.NET
Saharman, 2018-10-24 14:41:25

How to get json data in controller?

There is this controller:

[HttpPost]
        public async Task EditUserRoles([FromBody] string id, List<string> roles)
        {
            int a = 2; // код символический 
            return;
        }

Sending json data via postman. Sample data:
{
  "id": "2e5ae2ee-0c0c-4f58-4f58-08d638e70a7f",
  "roles": ["abc", "admin", "user", "test"]
}

In the debugger, I see that I get null instead of my data. What could be the problem and how to fix it?

Answer the question

In order to leave comments, you need to log in

2 answer(s)
D
Dasha Tsiklauri, 2018-10-24
@Saharman

you need to create a model class

public class MyModel 
{
  public string id {get;set;}
  public List<string> roles {get;set;}
}

and then in the handler write like this:
EditUserRoles([FromBody] MyModel model)

E
eRKa, 2018-10-24
@kttotto

FromBody может быть только один из параметров метода контроллера. И обычно это сложный тип, нет смысла отмечать им примитивы. Проверьте, есть ли вообще параметр в теле запроса: поставьте брейк поинт на самое начало метода и провалитесь в this.Request.Body, посмотрите чьи там параметры. Я предполагаю, что там в лучшем случае будет List. Попробуйте так (string id, [FromBody] List roles). Если так не сработает, то тогда нужно сделать так, как сказала Даша Циклаури.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question