【问题标题】:Unable to post JavaScript object to asp.net web api end point无法将 JavaScript 对象发布到 asp.net web api 端点
【发布时间】:2015-01-15 17:30:59
【问题描述】:

我在 ASP.NET WEB API 应用程序中有一个端点,如下所示:

        [HttpPost]
        public dynamic Save(string userId, List<MyObject> data)
        {
            return null;
        }

public class MyObject
    {
        public string name { get; set; }
        public List<itemAttribute> items { get; set; }
    }

public class itemAttribute
    {
        public int id { get; set; }
        public string typeName { get; set; }
        public string fullName { get; set; }
        public bool Checked { get; set; }
    }

我正在尝试发布以下 JavaScript 对象

data = [
{
    "name": "One",
    "items": [
        {
            "fullName": "name",
            "Checked": true,
            "typeName": "type 1",
            "id": 1
        },
        {
            "fullName": "nametwo",
            "Checked": true,
            "typeName": "some type 2",
            "id": 2
        }
    ]
}
    ]

当我到达终点时,data 将作为一个空列表出现。我没有看到任何具体的错误。请帮忙。

现在我正在使用火狐的 REST 客户端发布数据

【问题讨论】:

标签: javascript asp.net .net asp.net-mvc-3 asp.net-web-api2


【解决方案1】:

您不应该尝试传递多个参数。将签名更改为:

public dynamic Save([FromBody] List<MyObject> data)

另外,在将对象传递给 Web API 之前尝试对其进行字符串化:

JSON.stringify(data);

【讨论】:

  • 感谢您的快速帮助。我应该能够发送多个参数。我之前也使用了多个参数。我已经尝试使用您的建议(发送单个参数并使用 FromBody 属性),但它没有帮助。
  • POST 方法不支持使用 Web API 传递多个参数,或者至少不是开箱即用的方法,需要一些解决方法。我无权访问您的代码,但尝试将 List 更改为简单数组 MyObject[] 或查看 [ModelBinder]。您是否还对数据对象进行了字符串化?
【解决方案2】:

您必须更改两件事才能使其正常工作:
1st:将您的 post 方法签名更改为:

[HttpPost]
public dynamic Save(string userId, [FromBody]List<MyObject> data) {

第二: 从您的 json 中删除 data =。它应该看起来像:

[
{
    "name": "One",
    "items": [
        {
            "fullName": "name",
            "Checked": true,
            "typeName": "type 1",
            "id": 1
        },
        {
            "fullName": "nametwo",
            "Checked": true,
            "typeName": "some type 2",
            "id": 2
        }
    ]
}
]

data = 混淆了模型绑定器,您的列表为空。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-27
    • 2019-06-26
    • 2020-12-03
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多