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,所以我试图避免这种情况。 以前有没有人做过这样的事情? 我认为我走在正确的轨道上,但我被困在这一点上......

MVC 在索引视图中更新数据

确保添加了 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});