Передать массив информации от углового к контроллеру сети asp, который принимает объект модели - PullRequest
0 голосов
/ 26 декабря 2018

Я получаю массив, возвращенный из вызова API.Массив выглядит примерно так: https://i.imgur.com/Rq8GfBI.png.

Я получаю массив, затем вызываю метод моего контроллера, используя

this.http.post<Maps[]>(this.baseUrl + "api/Map/InsertMap/", beatmaps[0]).subscribe();

Maps, являющийся интерфейсом

interface Maps {
Id: number;
Name: string;
Artist: string;
Creator: string;
}

Теперь у меня просто есть базовый метод контроллера вставки

        [Route("api/[controller]/InsertMap/")]
    [HttpPost("[action]")]
    public async Task<IActionResult> AsyncCreateMap(MapModel model)
    {
        await _mapService.AsyncInsert(model);

        return Ok();
    }

Он принимает Модель в качестве параметра и затем вставляет ее с помощью Entity Framework.Не работаетЯ понятия не имею, как на самом деле передать массив, который я получаю, объекту, который я могу использовать в моем контроллере.

Вот весь мой класс контроллера

    [Route("api/[controller]")]
public class MapController : Controller
{
    private readonly MapService _mapService;

    public MapController(MapService mapService)
    {
        _mapService = mapService;
    }

    [Route("api/[controller]/Maps")]
    [HttpGet("[action]")]
    public async Task<IActionResult> AsyncMaps()
    {
        var data = await _mapService.AsyncGetMaps(0, 10);

        return Ok(data);
    }


    [HttpPost]
    public async Task<IActionResult> AsyncCreateMap([FromBody]MapModel model)
    {
        await _mapService.AsyncInsert(model);

        return Ok();
    }
}

1 Ответ

0 голосов
/ 26 декабря 2018

вы должны попробовать использовать [FromBody].

Пример:

public class ModelDTO
{
    public string Id{get; set;}
    public List<string> Childs {get; set;}
}


[HttpPost]
[Route("api/nice/Save")]
public bool Save([FromBody] ModelDTO model)
{ ...

в угловой стороне, вы должны использовать httpClient.post ..

save(data: IData): Observable<ISaveCompleted> {
    const options = this.createPostOptions();
    const saveCompleted = this.http
    .post(options.url, data, options)
    .map((res: Response) => <ISaveCompleted>res.json());
    return saveCompleted;
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...