Ajax PUT request to Web Api



我目前有一个ajax请求设置,用于向我的mvc 4项目中的web api发送"PUT"请求。我的请求能够进入api上的方法,但参数始终为null。有什么想法吗?我还检查了PUT请求的执行情况,它确实为每个表单控件发送了一个键/值对字符串。这是我的代码:

Web Api方法(选择始终为空)

public void Put([FromBody]string selection)
{
}

更新:

我忘了自己在调试。我已经确认,当您序列化一个表单时,参数被命名为"selection"。请再看一眼。

Ajax调用:

$.ajax({
    type: "PUT",
    url: urlPrefix + "api/file/Manipulate",
    data: $("#frmManipulate").serialize(),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    statusCode: {
        204: function (jqXHR) {
            alert("No file(s)/Directory(s) were selected.");
        }
    }
}).done(function () {
    location.reload();
});

它为空,因为您没有传递它:

data: { val1 : "test",  val2 : "test2"}

尝试:

data: { selection : "something" }

它为null,因为asp.net web api不知道如何将{ val1 : "test", val2 : "test2"}反序列化为字符串。您可以使用DTO方法将这些信息传递给操作,例如:

在webapi项目中,添加这样一个类:

public class InfoDTO
{
    public string val1 { get; set; }
    public string val2 { get; set; } 
    // other properties if you need
}

并更改您的看跌期权操作以获得以下类型的参数:

public void Put([FromBody]InfoDTO info)
{
   // use 'info' object
}

您的客户端javascript可以使用相同的代码。

最新更新