【发布时间】:2018-01-08 16:58:44
【问题描述】:
我有一个 WebApi,它以 Post 方法从我的网页接收数据: Api代码为:
public IHttpActionResult Post(PMSCost menu)
{
if (ModelState.IsValid)
{
try
{
if (menu.Price != 0)
return Ok(1);
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
return BadRequest(ModelState);
}
而模型类代码是:
public class PMSCost
{
public string CostName = "";
public int Price = 0;
}
我用代码调用 WebAPI:
var datatosend = new Object();
datatosend.CostName = "Foooooo";
datatosend.Price = 100;
jQuery.ajaxSetup({ async: true });
$.ajax({
url: "/api/PMSCost/",
type: "Post",
data: datatosend,
success: function (data) {
if (data == "Success") {
alert("Success");
}
},
});
Api 调用成功,但我发布到 Api 的 PMSCost 变量(菜单)始终为空值,例如 CostName= "" 和 Price= 0 。
有人知道我的代码有什么问题吗?提前致谢
【问题讨论】:
-
你用 HttpPost 属性装饰你的动作了吗?您可能还想分享如何将请求(使用例如 Fiddler)发送回服务器。
-
不,我不装饰动作......我认为WebAPI通过方法名称知道动作,是我错了吗?
-
这是等式的一部分,第二部分是动词。因此,将 [HttpPost] 添加到操作中,看看会发生什么。
-
关于请求的方式...我只是在 Visual Studio 中运行我的网站并在 Post 和跟踪代码中设置断点...。
-
在对 application/json 的 ajax 调用中设置请求的 contentType - 我认为默认是 form-url-encoded 并且它应该仍然有效,但我总是自定义它所以不确定。此外,浏览器开发工具中的网络选项卡通常就足够了,您不需要 fiddler 即可查看基本请求信息,但它会向您展示 jquery 实际发送数据的方式。
标签: c# ajax asp.net-web-api