这是我关于 SO 的第一个问题,所以请放心。我正在做一个项目,使消息能够被标记为未读。当用户单击详细信息时,它会将消息标记为已读,但我正在尝试使用CheckBoxFor来允许用户将消息标记为未读。这是我在彻底研究后的尝试。当我返回主视图时,我似乎无法将消息标记为未读。
这是 Details.cshtml 中的 CheckBoxFor:
<dd>
@Html.CheckBoxFor(model => model.UnreadMessage, new { onclick = "UpdateUnreadMessage(this)" })
</dd>
以及确定 CheckBoxFor 状态的 jQuery 调用:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
function UpdateUnreadMessage(elem) {
var UnreadMessage = $(elem).is(':checked');
$.ajax({
type: 'POST',
url: "@Url.Action("UpdateUnreadMessage", "Details")",
data: { check: UnreadMessage,},
success: function (res) {
console.log(res);
},
dataType: 'json'
});
}
</script>
这是 MessageController 中的 POST 方法:
// POST: Message/Details/5
[HttpPost]
public ActionResult UpdateUnreadMessage(bool check, Guid? id)
{
Message message = db.Messages.Find(id);
if (check == true)
{
message.UnreadMessage = true;
};
db.SaveChanges();
return View();
}
有人可以帮我弄清楚我做错了什么吗?我非常感激。