从webApi控制器中的jQuery ajax调用绑定模型

时间:2018-01-09 11:39:36

标签: jquery ajax asp.net-web-api2

我无法通过jQuery将数据对象发送到webApi控制器。调用获取响应的方法,但myMethod中的textValue和FunValues对象为null。我试过没有[FromBody],也作为一个名为textValue的简单字符串值。结果是" SUCESS:你的字符串是"没有发送字符串。

这是我的jQuery

  $.ajax({

            url: "api/ApiTest/MyMethod",
            method: "POST",
            data: {

                textValue: "This is text"

            },
            success: function (result) {
                console.log("SUCESS: " + result);
            },
            error: function (data) {
                console.log("error: " + data.responseText);
            }
        });

这是apiController中的方法和类

  [HttpPost]
    public string MyMethod([FromBody] FunValues values)
    {
        return "your string is " + values.textValue;
    }

    public class FunValues
    {
        public string textValue; 

    }

1 个答案:

答案 0 :(得分:0)

可能$ .ajax现在用得不多了。因此,很难创建一个应用程序并尝试。由于$ .ajax在表单时代被更多地使用,因此它具有一些不同的默认属性。

  1. $ .ajax使用Content-Type:application / x-www-form-urlencoded;所以你需要明确地将它设置为application.json
  2. 您需要明确使用JSON.stringify,否则会像表单数据一样发送。
  3. 以下代码为我工作。

     $.ajax({
                url: "http://localhost:49946/api/Values/MyMethod",
                method: "POST",
                contentType: "application/json",
                data: JSON.stringify(
                    {
                    textValue: "This is text"
                }
                ),
                success: function (result) {
                    console.log("SUCESS: " + result);
                },
                error: function (data) {
                    console.log("error: " + data.responseText);
                }
            });