如何从 angular post 对象到 webapi 控制器

how to post objects from angular to a webapi controller

我正在使用 pdfsharp 创建 pdf。我需要将图表图例数据(名称、颜色)传递给 pdfsharp 控制器。我正在使用 angular $http post,ajax post 也可以。我得到的错误是

Request URL:http://localhost:46691/api/exportChartPdf/[object%20Object],[object%20Object],[object%20Object],[object%20Object],[object%20Object],[object%20Object],[object%20Object],[object%20Object],[object%20Object],[object%20Object],[object%20Object],[object%20Object],[object%20Object],[object%20Object],[object%20Object],[object%20Object]

我需要知道如何将它作为字符串传递吗?如果是这样,我将如何在 api 控制器中将其解析回我需要的方式?

我要传回的对象

0: Object
     color: "rgb(67,134,215)"
     name: "Fleming Place - Miscellaneous Spec Builders"
__proto__: Object
1: Object
2: Object
3: Object
4: Object

javascript

 var legendModel = $scope.seriesData.map(function (a) {
            return {
                color: a.color,
                name: a.name
            };
        });
        $http.post('/api/exportChartPdf/' + legendModel);

api 控制器

 [HttpPost]
    public PDF Post() // allow nullable parameter
    {

        try
        {

看起来您的控制器操作缺少参数,

[HttpPost]
public PDF Post(SomeClass legendModel) // allow nullable parameter
{

    try
    {

SomeClass 将包含 color & name 属性。 然后你应该更正你的 $http.post 调用,将第二个参数作为 JSON 格式的数据传递。

$http.post('/api/exportChartPdf', { legendModel: legendModel);

您应该 post 将对象放在表单主体上,而不是查询字符串上。此外,您的 Web API 控制器应该接收到一个强类型对象,它反映了您正在传递的数据。

public class Data
{
    public string Color { get; set; }
    public string Name { get; set; }
}

[HttpPost]
public PDF Post([FromBody]List<Data> data) 
{
    ... 
}

然后只是 post 对象。

var legendModel = $scope.seriesData.map(function (a) {
        return {
            color: a.color,
            name: a.name
        };
    });

$http.post('/api/exportChartPdf/', legendModel);