如何将对象从角度发布到webapi控制器

时间:2015-06-12 17:10:19

标签: javascript c# angularjs asp.net-web-api http-post

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

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
        {

2 个答案:

答案 0 :(得分:2)

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

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

    try
    {

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

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

答案 1 :(得分:2)

您应该在表单主体上发布对象,而不是在查询字符串上。此外,您的Web API控制器应该接收一个强类型对象,该对象镜像您传递的数据。

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

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

然后简单地发布对象。

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

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