【问题标题】:Send Json object parameter to Web Api controller in .netCore将 Json 对象参数发送到 .net Core 中的 Web Api 控制器
【发布时间】:2017-05-17 08:56:36
【问题描述】:

这是 Google API - Javascript 代码

var output = new Object();
output.PlaceID = place.place_id;
output.Longitude = place.geometry.location.lng();
output.Latitude = place.geometry.location.lat();

$.ajax({
    headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
    },
    url: 'api/StorePlaces/Get',
    type: 'POST',
    data: { "value":output },
    success: function (result) {
        // Do something with the result
    }
});

如何在控制器处接收

    // GET api/values/5
    [HttpPost("{PlaceDetails}")]
    public string Get(PlaceDetails value)
    {
        return "value";
    }

在这种情况下,我得到空值

我无法发送字符串,如果我可以这样发送对象,那就更好了。

这可以作为接收对象

public class PlaceDetails
{
    public string PlaceID { get; set; }
    public string Longitude { get; set; }
    public string Latitude { get; set; }
}

【问题讨论】:

  • 将 ajax 中的请求类型更改为“POST”并更改您的方法以接受 POST 并将参数类型更改为“PlaceDetails”
  • @Dalton 我得到空值,该怎么办
  • 修改数据:放入data:output并删除[FromBody]
  • @ARUNEdathadan:另外,请不要使用自最初问题以来您尝试过的东西来编辑问题,因为它可能会完全改变问题的含义

标签: json ajax string asp.net-web-api asp.net-core


【解决方案1】:

你的代码有很多问题,也许先参考一些初学者教程?

首先,您必须查看您发送的对象,这非常明显!

你正在发送

{
    "value" : {
        "PlaceID" : "",
        "Longitude " : "",
        "Latitude " : ""
    }
}

预期的答案在哪里

{
    "PlaceID" : "",
    "Longitude " : "",
    "Latitude " : ""
}

所以你必须在 JavaScript 中使用它:

$.ajax({
    headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
    },
    url: 'api/StorePlaces/Get',
    type: 'POST',
    // do not wrap it in object with value property here!!!!
    data: JSON.stringify(output),
    success: function (result) {
        // Do something with the result
    }
});

其次,您的控制器操作(为什么它是一个发布请求时称为Get?)...[HttPost("{PlaceDetails}")] 属性完全错误。

这需要路由中的PlaceDetails 参数。你没有这样的人!只需将其删除。此外,缺少 [FromBody] 属性来告诉它从 http 请求正文中反序列化模型

[HttpPost]
public string Get([FromBody]PlaceDetails value)
{
    return "value";
}

【讨论】:

  • 是的,很好的答案,但是作为初学者的夸张对他有帮助吗?它会帮助其他人看到毫不掩饰的侮辱吗?它真的让你感觉更好吗?
猜你喜欢
  • 2023-02-04
  • 2021-10-12
  • 2020-11-19
  • 1970-01-01
  • 2020-11-19
  • 2012-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多