我已經做了創建,編輯功能&試圖做刪除功能,但默認情況下,我的網頁重定向到Delete.aspx
的刪除確認。 我想要嘗試刪除我的記錄時發生以下步驟。目前我在 index.aspx並希望保持在同一頁面&從數據庫中刪除記錄。MVC刪除記錄彈出
圖片1張
圖片2
圖片3
我不想從這個URL刪除。前者爲 。 http://localhost:53402/Project/Delete/11,任何人都很容易刪除任何給予id的記錄。
我已經做了創建,編輯功能&試圖做刪除功能,但默認情況下,我的網頁重定向到Delete.aspx
的刪除確認。 我想要嘗試刪除我的記錄時發生以下步驟。目前我在 index.aspx並希望保持在同一頁面&從數據庫中刪除記錄。MVC刪除記錄彈出
圖片1張
圖片2
圖片3
我不想從這個URL刪除。前者爲 。 http://localhost:53402/Project/Delete/11,任何人都很容易刪除任何給予id的記錄。
進行刪除使用JavaScript和彈出,您需要: 1)控制器類似下面創建一個動作:
[HttpPost]
public void DeleteItem(int id)
通過使用[HttpPost]批註裝飾操作方法,可以避免用戶輸入URL/Home/Delete/1的不良行爲,因爲只有POST將調用該操作。
2)如果您刪除項是項目列表的一部分,你需要一種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用戶界面對話框組件:
爲你彈出的文本創建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");
}
}
});
};
什麼,所以,我們得到的按鈕
var recordToDelete = $(this).attr("data-id");
w的ID這裏的「this」是導致該事件使用
以下行實際上是我們要求控制器執行刪除操作來觸發HTML元素,我們使用記錄
$.post("/Home/Delete", { id : recordToDelete}, DeleteSuccessfull);
的id 5)因爲jQuery的職位是 - 異步,我們需要一個回調來處理結果
function DeleteSuccessfull()
{
//Do what you want...
};
就是這樣......記住,這只是一個例子,我使用jQuery對話框組件,而你可以使用有些不同。
謝謝你的回答會更好Sonica,但是我需要一些時間才能理解這一切..:P無論如何謝謝.. –
如果我在我的解釋中太簡明扼要,我很抱歉。這裏的關鍵是如果你想使用javascript刪除一個項目,你需要一個與你想刪除的對象相關聯的唯一標識符。在我的例子中,這個標識符是一個data- *屬性,並放置在觸發Delete操作的HTML元素上。然後剩下的只是一個顯示對話框的jQuery練習,調用一個動作並處理結果。 – s0nica
你必須做某種形式的id,沒有任何其他方式。
如果您不希望用戶操縱URL,則需要某種登錄/權限系統。
使用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>
如果您試圖獲得真正的MVC,就像您的問題所暗示的那樣,事件事務將提交給控制器(如index.aspx) - 控制器將具有一個事件,該事件指定您正坐在其中的當前視圖頁一樣
事件=「displayGui」將包括視圖文件「frmCreate.aspx」或「frmEdit.aspx」
當視圖文件(一個或多個)「frmCreate.aspx」或「frmEdit.aspx」的提交時,它調用等
事件=「submitAndConfirm」
在控制器的另一事件事件submitAndConfirm將包括用於處理刪除操作,通過包括一個名爲actDelete.aspx文件的說明。當工作完全,由actDelete.aspx,控制器會再打事件=「displayGui」。
這是一個概念性的例子,需要ASPX具體實施。
我不想從這個URL刪除。對於前。 http://localhost:53402/Project/Delete/11,這將是很容易對任何人刪除任何記錄賦予ID。
如果您不希望用戶去猜測ID,使用的Guid不是int
http://localhost:53402/Project/Delete/30D4AAF1-3CF1-4514-A025-2DDE1C770CD5
好主意..謝謝 –
如果您發佈ATLEAST你的一些代碼在這裏爲我們 – user1157131