我有一个列出一堆信息的索引视图,例如:
@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>
}
我想在这里设置一个ADD ONE按钮。请注意上面的行:
<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,所以我试图避免这种情况。以前有人做过这样的事吗?我觉得我走在正确的轨道上,但我现在陷入困境......
答案 0 :(得分:0)
确保添加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);
});
});
答案 1 :(得分:0)
我不明白你的问题到底是什么。在索引视图中更新数据很容易 - 尤其是在使用局部视图时。根据您在此处提供的信息,您不需要使用Jquery。但是通过你的控制器,我注意到了这一点(看起来不对):
RedirectToAction("Edit/" + id);
这是对的:
RedirectToAction("Edit", new { id = id});