从视图中调用Controller方法

时间:2017-06-23 13:18:51

标签: c# model-view-controller

我觉得这是一个非常简单的问题,但我无法弄清楚如何去做。

我有一个网页,其中包含我在健身房进行的每项练习的日志条目。日期,运动,体重,代表等我可以添加条目。我还想通过按下按钮从索引页面删除一行。我只想在单击删除一次后删除该行,并仍然保留在索引页面中。但是,我不知道如何从索引视图页面调用我的删除方法。

我在最后一栏添加了一些伪代码

        <tbody>
        @foreach (var logrow in Model.Take(30))
        {
            <tr>
                <td>
                    <h6>@logrow.Date.ToString("dd-MM-yy")</h6>
                </td>
                <td>
                    <h6>@logrow.Exercise</h6>
                </td>
                <td>
                    <h6>@logrow.Weight</h6>
                </td>
                <td>
                    <h6>@logrow.Repetitions</h6>
                </td>
                <td>
                    <h6>@logrow.Sets</h6>
                </td>
                <td>
                    <h6>@logrow.Rest_time</h6>
                </td>
                <td>
                    <h6>@logrow.Notes</h6>
                </td>
                <td>
                    <*LINK TO METHOD DELETE_LOG_ROW(logrow.id)* class="btn btn-danger btn-sm">
                        <span class="glyphicon glyphicon-trash"></span><span class="hidden-xs"> Delete</span>
                    </a>
                </td>
            </tr>
        }
    </tbody>

3 个答案:

答案 0 :(得分:1)

Html.ActionLink("Delete", "ActionName", "ControllerName", new { id = logrow.YourID }, null)

在控制器中

public ActionResult ActionName(int id)
{
    // delete logic
    return View("ViewName", "ControllerName");

}

答案 1 :(得分:0)

如果没有纯ASP.NET MVC中的页面重新加载,则无法执行此操作。 使用AJAX来防止重新加载。

所以你的流程看起来像

  • 通过ajax调用服务器删除实体

  • 再次致电服务器以获取更新的实体集合

  • 重建DOM

答案 2 :(得分:0)

你可以调用ajax并删除你想要的项目并从服务器获取更新列表,并以部分视图或Json的形式返回它,并重新显示你显示列表的div。