'错误405 - 方法不允许'在ASP.NET Web API中发送Ajax POST请求时

时间:2017-06-01 18:59:48

标签: c# asp.net ajax rest asp.net-web-api

我正在设计一个简单的Web API服务,它接受html表单上的输入,将这些输入转换为json,然后将其发送到Web API。我正在使用Visual Studio 2017中的ASP.NET Web API。以下是我的一些代码,可以帮助我更好地解释:

这是我正在调用的控制器方法:

[HttpPost]
public AssessModel PostAssessment ([FromBody] AssessModel assess)
{
    //Do something
    return assess;
}

这是我使用的模型(简化):

public class AssessModel
{
    public Guid capitalassetassessmentid { get; set; }
    public string ownerid { get; set; }

    /*... Many more properties of int, bool, ect here ...*/

    public string name { get; set; }
    public string building { get; set; }
}

最后这是我在脚本中使用的ajax调用:

$("form#my-form").submit(function (e) {
    //First line here takes all fields and puts them in an array
    var formArray = $(this).serializeArray();
    //Second line takes that array and puts it into json format.
    var jsonObj = JSON.stringify(formArray);

    //Send request
    $.ajax({
        type: "POST",
        url: "api/assessment/PostAssessment",
        data: jsonObj,
        contentType: "application/json",
        dataType: "json",
        success: function (jsonObj) {
            $("#results").html(jsonObj.d);
        }
    });
});

所以当我提交表单时,我正在调用此ajax请求。这个ajax请求应该将我的json作为字符串发送到控制器方法,但是当我按下提交时,我得到错误405 - 方法不允许。我不确定为什么我不允许将POST动词发送到带有标签HttpPost的控制器方法。

还值得一提的是我的表格标签是这样的:

<form id="my-form" class="form" method="POST">

有什么想法?我需要澄清什么吗?让我知道。

1 个答案:

答案 0 :(得分:0)

尝试

var data = {};
var formArray = $('form#my-form').serializeArray();
for(var i in array)
{
    data[formArray[i].name] = formArray[i].value;
}
var jsonObj = JSON.stringify(data);