AJAX不向Web API控制器发送数据

时间:2017-07-16 19:08:50

标签: c# ajax api model-view-controller web

如果输入变量(a)未设置为Null,则以下Ajax代码甚至不会触发我的操作。

Ajax代码:

var ab = "Chocolate Smoothies ya know?";

$("#customerSubmit").submit(function (e) {

    e.preventDefault();

    $.ajax({
        url: "/api/Booking/lander",
        method: "post",
        data: { a: ab }
    })
});

以下我的控制器代码:

[HttpPost]
public void lander(string a)
{
    System.Diagnostics.Debug.WriteLine(a);
}

当我没有将它设置为null时,收到的输入为空。

触发断点时的

屏幕截图:

enter image description here

我使用过类型/方法/等等。似乎没什么用。

更新

我甚至尝试了以下但没有用:

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:0)

根据我使用Post方法的经验,最好使用一些类包装器,如:

public class StringInfo
{
     public string Value {get; set; }
}

public void lander(StringInfo info)

并在你的javascript中

data: { value: ab }

答案 1 :(得分:0)

当您发布简单类型在C#上使用WebAPI时,它会自动将其绑定到Url,因此将控制器中的[FromBody]更改为[FromURI]

另外,您可以将其作为具有空变量名称

的复杂类型传递
var ab = 'Chocolate Smoothies ya Know?';
$.ajax({
    url:"/api/Booking/lander", 
    data: {'': ab}
});
相关问题