索引视图中的MVC更新数据

时间:2015-06-17 05:41:22

标签: c# asp.net-mvc visual-studio razor

我有一个列出一堆信息的索引视图,例如:

@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,所以我试图避免这种情况。以前有人做过这样的事吗?我觉得我走在正确的轨道上,但我现在陷入困境......

2 个答案:

答案 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});