为了使用 javascript 和弹出窗口执行删除,您需要:
1)在控制器中创建一个动作,如下所示:
[HttpPost]
public void DeleteItem(int id)
通过使用 [HttpPost] 注释装饰操作方法,您可以避免用户键入 URL /Home/Delete/1 的不良行为,因为只有 POST 会调用该操作。
2)如果你delete-item是一个item列表的一部分,你需要在View中绑定你的item一个id,使用自定义的HTML5属性,如下:
@for (int i = 0; i < Model.Items.Count; i++)
{
<a href="#" class="delete-button" data-id="@Model.Items[i].Id">Delete</a>
}
3) 以 jQuery 为例,将页面中的删除按钮绑定到单击时弹出窗口
$().ready(function () {
$(".delete-button").click(null, DeleteItem); //DeleteItem is the callback
return false;
});
我们需要指定一个回调来处理删除按钮的点击
4)使用例如 jQuery UI 对话框组件:
为您的弹出文本创建 HTML
<div id="dialog-confirm" style="display:none;" title="Confirm">
<p>
<span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;"></span>
Are you sure you want to proceed?
</p>
</div>
处理删除按钮单击并将对话框绑定到 html 文本,以便弹出窗口告诉用户您想要什么
function confirmDeleteVersion() {
var recordToDelete = $(this).attr("data-id"); // now we need the data-id to retrieve the identifier for the item to delete
$("#dialog-confirm").dialog({
resizable: false,
height: 200,
modal: true,
buttons: {
"Delete": function () {
$(this).dialog("close");
$.post("/Home/Delete", { id : recordToDelete}, DeleteSuccessfull);
},
Cancel: function () {
$(this).dialog("close");
}
}
});
};
所以,我们得到了按钮的id
var recordToDelete = $(this).attr("data-id");
其中“this”是导致事件触发的 HTML 元素
下面一行实际上是我们要求Controller执行删除操作的地方,我们使用记录的id
$.post("/Home/Delete", { id : recordToDelete}, DeleteSuccessfull);
5) 因为jQuery post是异步的,所以我们需要一个回调来处理结果
function DeleteSuccessfull()
{
//Do what you want...
};
就是这样...请记住,这只是一个示例,我使用的是 jQuery 对话框组件,而您可以使用不同的东西。