【问题标题】:Calling Controller method from view从视图调用控制器方法
【发布时间】:2017-06-23 13:18:50
【问题描述】:

我觉得这是一个非常简单的问题,但我不知道该怎么做。

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

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

        <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>

【问题讨论】:

  • 您想要一个按钮(或链接等),如果您单击它,它将调用控制器上的方法来删除某些内容?这就是你想要达到的目标吗?
  • 你说得对!

标签: c# model-view-controller


【解决方案1】:
Html.ActionLink("Delete", "ActionName", "ControllerName", new { id = logrow.YourID }, null)

在控制器中

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

}

【讨论】:

  • 谢谢。在发帖之前,我实际上已经尝试过了。但我将“HomeController”写为控制器名称而不是“Home”。初学者挣扎:)
【解决方案2】:

如果没有在纯 ASP.NET MVC 中重新加载页面,您将无法做到这一点。 使用 AJAX 来防止这种重新加载。

所以你的流程看起来像

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

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

  • 重建 DOM

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 2023-03-05
      • 1970-01-01
      相关资源
      最近更新 更多