MVC 在索引视图中更新数据
本文关键字:更新 数据 视图 索引 MVC | 更新日期: 2023-09-27 17:56:33
我有一个列出一堆信息的索引视图,例如:
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.FullName)
</td>
<td>
@Html.DisplayFor(modelItem => item.OptIn)
</td>
<td>
@Html.DisplayFor(modelItem => item.Donation)
</td>
<td>
@Html.DisplayFor(modelItem => item.Attended)
</td>
<td>
@Html.ActionLink("Add One", "Check", new { id = item.ID }, new { @class = "btn btn-primary btn-default" })
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.ID }) |
@Html.ActionLink("Details", "Details", new { id = item.ID }) |
@Html.ActionLink("Delete", "Delete", new { id = item.ID })
</td>
</tr>
}
我想在这里设置一个"添加一个"按钮。 请注意上面的一行:
<td>
@Html.ActionLink("Add One", "Check", new { id = item.ID }, new { @class = "btn btn-primary btn-default" })
</td>
这很容易 如果我转到另一个控制器/视图,但我想留在索引视图中。 我构建了一个 CHECK 控制器操作结果,如下所示:
public ActionResult Check(int? id)
//[Bind(Include = "ID, Attended")]
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Guest guest = db.Guests.Find(id);
guest.Attended = (guest.Attended + 1);
if (ModelState.IsValid)
{
db.Entry(guest).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return RedirectToAction("Edit/" + id);
}
这是行不通的。 页面不会崩溃,但不会执行任何操作。 我猜也许我需要为此使用 JQUERY? 我还没有学过JQUERY,所以我试图避免这种情况。 以前有没有人做过这样的事情? 我认为我走在正确的轨道上,但我被困在这一点上......
确保添加了 JQuery 库,然后创建如下脚本: $(window).load(function () { var data = $('#yourInputId').val();
$.ajax({
url: "http://" + location.host + "/CTRL/ACTION",
type: "POST",
data: { 'deleteId': data },
}).done(function (data) {
your logic here if server;
}).fail(function (err) {
alert(err.statusText);
});
});
我不明白你的问题到底是什么。在索引视图中更新数据很容易 - 尤其是在使用分部视图时。根据您在此处提供的信息,您不需要使用 Jquery。但是通过您的控制器,我注意到了这一点(看起来不对):
RedirectToAction("Edit/" + id);
这是正确的:
RedirectToAction("Edit", new { id = id});