我正在网站上工作,并希望能够在单击div时更新数据库表上的字段。我在堆栈上找到了一些示例代码here,但由于某种原因它不起作用,即使它被接受了。我正在使用C#ASP.NET MVC Razor。
我的JavaScript功能如下:
function toggleContent(id, instID) {
var doc = document.getElementsByClassName("messageContent")[id];
$(doc).slideToggle();
$.ajax({
type: 'POST',
url: "@Url.Content('/Messages/MarkSeen/')",
data: {
instanceID : instID
},
dataType: 'json'
});
}
我的JsonResult如下:
[HttpPost]
public JsonResult MarkSeen(int instanceID)
{
var markSeen = db.MessageInstances.First(mi => mi.MessageInstanceId == instanceID);
if (markSeen.RegisteredPerson.PersonId == CurrentUser.PersonId)
{
markSeen.Seen = true;
db.SaveChanges();
return Json(true);
}
return Json(false);
}
答案 0 :(得分:0)
我不确定你的代码在哪里失败,所以我发布了完整的工作代码 如果您使用的是ApiController,请尝试以下更新以使您的代码正常工作: 1.添加到WebApiConfig.cs的路由
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
2。的JavaScript
$.ajax({
type: "POST",
url: "@Url.Content("/api/lab/MarkSeen")",
data: { "instanceID": instID },
dataType: 'json',
success: function (data) { alert(data)},
error: function () { alert('error'); }
});
3。添加模型以匹配来自ajax请求的json:
public class labModel
{
public int instanceID { get; set; }
}
4。控制器:
[System.Web.Mvc.HttpPost]
public JsonResult<bool> MarkSeen(labModel data)
{
return Json(true);
}