我已完成创建,修改功能&尝试执行删除功能,但默认情况下,我的页面会重定向到Delete.aspx
以进行删除确认。
我想在尝试删除记录时发生以下步骤。目前我在
index.aspx并希望保持同一页面&从数据库中删除记录。
图片1
图片2
图3
我不希望从URL中删除此内容。 对于前 http://localhost:53402/Project/Delete/11 ,任何人都可以轻松删除任何提供ID的记录。
答案 0 :(得分:3)
为了使用javascript和弹出窗口执行删除,您需要: 1)在控制器中创建一个动作,如下所示:
[HttpPost]
public void DeleteItem(int id)
通过使用[HttpPost]注释修饰操作方法,可以避免用户键入URL / Home / Delete / 1的不良行为,因为只有POST才会调用该操作。
2)如果delete-item是项目列表的一部分,则需要使用自定义HTML5属性绑定到View a of id中的项目,如下所示:
@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帖子是异步的,我们需要一个回调来处理结果
function DeleteSuccessfull()
{
//Do what you want...
};
就是这样......请记住,这只是一个例子,我正在使用jQuery对话框组件,而你可以使用不同的东西。
答案 1 :(得分:0)
你必须通过某种身份来做这件事,没有别的办法。
如果您不希望用户操纵URL,则需要某种登录/权限系统。
答案 2 :(得分:0)
尝试使用jquery:
<script type="text/javascript">
$(function () {
$(".delete").live("click", function (e) {
e.preventDefault();
if (confirm("Are you sure you wish to delete this article?")) {
$.post(this.href);
}
});
});
</script>
<a href="/Project/Delete/11" class="delete">Delete</a>
答案 3 :(得分:0)
如果您正在尝试实现真正的MVC,正如您的问题所暗示的那样,事件事务将提交给控制器,如index.aspx - 该控制器将具有指定您所在的当前视图页面的事件,喜欢
event =“displayGui”将包含视图文件“frmCreate.aspx”或“frmEdit.aspx”
当视图文件“frmCreate.aspx”或“frmEdit.aspx”提交时,它会调用控制器中的另一个事件,如
event =“submitAndConfirm”
事件submitAndConfirm将包含一个处理删除操作的指令,方法是包含一个名为actDelete.aspx的文件。当actDelete.aspx完成工作时,控制器将回调event =“displayGui”。
这是一个概念性示例,需要特定于aspx的实现。
答案 4 :(得分:0)
我不希望从URL中删除此内容。对于前http://localhost:53402/Project/Delete/11,任何人都可以轻松删除任何提供ID的记录。
如果您不希望用户猜测id,请使用Guid而不是int
http://localhost:53402/Project/Delete/30D4AAF1-3CF1-4514-A025-2DDE1C770CD5