例如,有一个包含2个操作的成员控制器:
1-Show:显示每个成员前面有标签的成员列表,从数据库中删除相关成员。
2-Delete:从数据库中删除成员
标记“a”删除:
<a href="/Member/Delete/Id">Delete<a>
删除时单击URL地址更改为/ Member / Delete / Id。我不想更改网址并保留/会员/显示,虽然我想要在删除会员时显示成功消息。 这样做的最佳做法是什么?
答案 0 :(得分:0)
您绝对应该不使用HTTP GET请求删除或进行其他破坏性更改。将删除操作设置为HTTP POST,并使用一个表单提交给具有删除ID的控制器。如果您需要适合现有设计,可以轻松地将提交按钮设置为看起来像链接。
就您的要求而言,我实际上会使用AJAX提交删除表单,并在成功回调中返回您的消息并从页面中删除该项目。这根本不需要重新加载页面,并且可以直接用jQuery实现。
或者,如果您对JavaScript没有信心或者不想使用Ajax请求,则可以从POST请求返回Redirect to Action结果,该结果将返回列表,并将已删除的项目ID添加到行动的路线值字典。
为此,它应该与您的操作上定义的可为空的int参数匹配。然后可以在绑定时在视图模型上设置,或者您可以简单地使用ViewBag。然后在视图中你可以做这样的事情 -
@if (Model.ItemDeleted.HasValue) {
<p class="success-message">Successfully deleted item @Model.ItemDeleted.Value</p>
}