2012-01-25 67 views
0

我已經做了創建,編輯功能&試圖做刪除功能,但默認情況下,我的網頁重定向到Delete.aspx的刪除確認。 我想要嘗試刪除我的記錄時發生以下步驟。目前我在 index.aspx並希望保持在同一頁面&從數據庫中刪除記錄。MVC刪除記錄彈出

圖片1張 enter image description here

圖片2

enter image description here

圖片3

enter image description here

我不想從這個URL刪除。前者爲 。 http://localhost:53402/Project/Delete/11,任何人都很容易刪除任何給予id的記錄。

+0

如果您發佈ATLEAST你的一些代碼在這裏爲我們 – user1157131

回答

3

進行刪除使用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對話框組件,而你可以使用有些不同。

+0

謝謝你的回答會更好Sonica,但是我需要一些時間才能理解這一切..:P無論如何謝謝.. –

+0

如果我在我的解釋中太簡明扼要,我很抱歉。這裏的關鍵是如果你想使用javascript刪除一個項目,你需要一個與你想刪除的對象相關聯的唯一標識符。在我的例子中,這個標識符是一個data- *屬性,並放置在觸發Delete操作的HTML元素上。然後剩下的只是一個顯示對話框的jQuery練習,調用一個動作並處理結果。 – s0nica

0

你必須做某種形式的id,沒有任何其他方式。

如果您不希望用戶操縱URL,則需要某種登錄/權限系統。

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

如果您試圖獲得真正的MVC,就像您的問題所暗示的那樣,事件事務將提交給控制器(如index.aspx) - 控制器將具有一個事件,該事件指定您正坐在其中的當前視圖頁一樣

事件=「displayGui」將包括視圖文件「frmCreate.aspx」或「frmEdit.aspx」

當視圖文件(一個或多個)「frmCreate.aspx」或「frmEdit.aspx」的提交時,它調用等

事件=「submitAndConfirm」

在控制器的另一事件

事件submitAndConfirm將包括用於處理刪除操作,通過包括一個名爲actDelete.aspx文件的說明。當工作完全,由actDelete.aspx,控制器會再打事件=「displayGui」。

這是一個概念性的例子,需要ASPX具體實施。