【问题标题】:Post from JQuery Json to ASP.Net MVC: the 2 parameters are null从 JQuery Json 发布到 ASP.Net MVC:2 个参数为空
【发布时间】:2015-06-26 14:04:54
【问题描述】:

我通过像jQuery posts null instead of JSON to ASP.NET Web API(在这个网站上)、
http://encosia.com/using-jquery-to-post-frombody-parameters-to-web-api/
https://weblog.west-wind.com/posts/2012/May/08/Passing-multiple-POST-parameters-to-Web-API-Controller-Methods...
我尝试了所有提示和解决方案,但我的控制器中仍然没有值。
这是我的代码:

客户端 HTML 文件:

var coup = { Token: token, MotPropose: RecupMot() };
var coupJSON = JSON.stringify(coup);

$.ajax({
            type: 'POST',
            url: urlJeu,
            dataType: 'json', 
            data: coupJSON,
            success: function (reponseJSON) {
                 /* CODE HERE */
            },
        });

正确发送以下 JSON(Fiddle 说):

{"Token":103,"MotPropose":"ravoi"}

(顺便说一句,我担心 int 103 周围缺少 ",不是吗?)

服务器 C# 控制器和对象:

public object Post([FromBody]CoupMeliMelo coup)
{
    return Ok(jeu.JouerLeCoup(coup));
}

public class CoupMeliMelo : ICoup
{
    public string MotPropose { get; set; }
    public int Token { get; set; }
}

然后,当JSON到达控制器时,对象coup被创建,但MotPropose为null,Token为0。

我被困住了!感谢您的帮助。

【问题讨论】:

  • 你能确保 RecupMot() 函数返回字符串值吗?
  • 是的,实际上它返回“ravoi”。
  • 尝试将 contentType: "application/json; charset=utf-8", 添加到您的 ajax 调用中。
  • 这是 Web API 控制器还是 MVC 控制器?
  • 它是一个 Web API 控制器。

标签: c# jquery asp.net json asp.net-mvc


【解决方案1】:

首先,没有理由调用 stringify。只需发布对象。其次,将内容作为 application/json 发送。

var coup = { Token: token, MotPropose: RecupMot() };

$.ajax({
        type: 'POST',
        url: urlJeu,
        dataType: 'json', 
        contentType: "application/json",
        data: coup,
        success: function (reponseJSON) {
             /* CODE HERE */
        },
    });

最后,[FromBody] 属性不适用于 ASP.NET MVC,仅适用于 WebApi。你不需要它。

public object Post(CoupMeliMelo coup)
{
    return Ok(jeu.JouerLeCoup(coup));
}

【讨论】:

  • 其实是WebApi,所以我保留了[FromBody] 然后我删除了stringify,然后添加了ContentType,但没有成功...(抱歉延迟:我跳到VS 2015,有一些麻烦...)
猜你喜欢
  • 2013-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-18
  • 1970-01-01
  • 1970-01-01
  • 2015-03-24
相关资源
最近更新 更多