【发布时间】:2018-02-01 16:03:19
【问题描述】:
我通过 j 查询调用传递数据,我在数据库上有一个自动递增的键,即 ID,所以我在脚本上创建了一个变量来模仿它。
webApi 上的方法显示请求成功,但是当我在其上运行断点时,运行数据库更改的代码没有受到影响。
我不知道这是 Jquery 还是 MVC 相关的,所以我要标记两者。
证明post web api的请求被命中,http://imgur.com/a/TZSA4
WebApi 路由:
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute (
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
脚本:
<script >
var id = 29;
function populateTab() {
}
var addvisible = document.getElementById("btnshowadd");
$("#addpostform").hide();
addvisible.onclick = function () { $("#addpostform").show() };
$("#hideadd").click(function () {
var postObject = {
ID: id,
Title: $("#PostTitle").val(),
Body: $("#PostBody").val(),
Image: $("#PostImage").val(),
DateTime: Date.now()
};
jQuery.ajax({
type: "POST",
data: JSON.stringify(postObject),
url: "../api/posts",
contentType: "application/json"
});
id++;
});
WebApi 帖子:
[ResponseType(typeof(Post))]
[HttpPost]
[Route("api/Posts")]
public IHttpActionResult PostPost(Post post)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.Posts.Add(post);
db.SaveChanges();
return CreatedAtRoute("DefaultApi", new { id = post.ID }, post);
}
【问题讨论】:
-
你试过逐行检查你的api吗?您的帖子参数是否具有完整的值?
-
@Redan 是的,当对象被传递时,它会被更正,唯一的强制性值是 id
-
@TahaMouhtij 这是一个路由问题。如果它没有触发操作,那么您发布到的 URL 与为 API 配置的路由不匹配。提供可用于重现问题的minimal reproducible example。目前没有提供足够的信息。
-
@Nkosi 我如何提供信息,我应该复制这两个文件吗?或者分享我的github?
-
@TahaMouhtij 您是否阅读了我上一条评论中包含的链接?从 web api 配置路由和控制器开始。您还想确认客户端正在调用正确的 URL
标签: jquery asp.net json asp.net-web-api