【发布时间】:2015-06-17 05:41:21
【问题描述】:
我有一个索引视图列出了一堆信息,例如:
@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,如果是,请检查您是否在任何锚点点击中使用
e.preventDefault()或e.stopPropagation()。还有,更新了吗? -
在您介绍 CHECK 控制器之前,您的问题很清楚。 CHECK 控制器的目的是什么。我认为您要做的就是添加一个按钮,onclick 应该允许用户添加新项目。页面不应刷新。对吗?
-
if (ModelState.IsValid)有点无意义——ModelState中唯一的属性是int? id,它永远不会无效。 -
究竟是什么不起作用。当前代码显示您将
Attended属性增加1并重定向回Index()方法。你在期待什么? -
每次我按下“添加一个”按钮时,参与的字段都不会增加一
标签: c# asp.net-mvc visual-studio razor