【发布时间】:2017-11-03 01:14:18
【问题描述】:
我正在设计一个简单的 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">
有什么想法吗?我需要澄清什么吗?告诉我。
【问题讨论】:
-
我会仔细检查您的路线。您确定端点是 api/assessment/postassessment 吗?可能只是 api/assessment。
-
我只是仔细检查了一遍,并没有解决问题。好主意。
-
尝试将链接中的代码添加到您的 web api web.config enable-cors.org/server_iis7.html 。不确定这是否是您的问题,但如果可以解决,我可以给您一个详细的答案。
标签: c# asp.net ajax rest asp.net-web-api