将信息数组从angular传递到接受模型对象的asp网络控制器

时间:2018-12-26 20:38:52

标签: c# asp.net angular entity-framework

我正在从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();
    }

它将模型作为参数,然后使用实体框架将其插入。没用我不知道如何将获得的数组实际转移到可以在控制器中使用的对象。

这是我的整个控制器课

    [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 :(得分:1)

您应该尝试使用[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;
 }