2012-09-18 89 views
4

我想創建一個Javascript彈出式窗口詢問我是否要刪除列表。動作鏈接刪除確認

這裏是我目前所擁有的(不起作用 - 當控制器捕捉到Guid爲空時)。

@Html.ActionLink("Delete", "Delete", "Listing", listing.Guid, new { onclick = "return confirm('Are you sure you want to delete this listing?')" }) 

首先刪除是字符串,第二刪除是方法的ActionName,上市是控制器的名字,listing.Guid是我要跨越,最後,當然是的onclick發送參數是Javascript。

任何想法,我可能會出現可怕的錯誤?

編輯此外,任何想法如何我可以有一個更漂亮的確認對話框?使用Bootstrap。

+0

看看這個答案:HTTP:/ /stackoverflow.com/questions/2537463/asp-net-mvc-how-to-make-users-confirm-the-delete][1] [1]:http://stackoverflow.com/問題/ 2537463/asp-net-mvc-how-to-make-users-confirm-the-delete –

回答

9

你可以使用匿名對象傳遞路線值:

@Html.ActionLink(
    "Delete", 
    "Delete", 
    "Listing", 
    new { id = listing.Guid }, 
    new { onclick = "return confirm('Are you sure you want to delete this listing?')" } 
) 

和相應的控制措施:

public ActionResult Delete(Guid id) 
{ 
    ... 
} 

是的,這是一個非常糟糕的主意,用ActionLinks和GET請求調用修改服務器上的狀態的操作(例如刪除某些內容)。更好的方法是在這種情況下使用正確的HTTP動詞 - DELETE。但由於HTML表單不普遍支持這個動詞,你既可以使用AJAX或使用POST動詞:

@using (Html.BeginForm("Delete", "Listing", new { id = listing.Guid }, FormMethod.Post, new { onsubmit = "return confirm('Are you sure you want to delete this listing?');" })) 
{ 
    @Html.HttpMethodOverride(HttpVerbs.Delete) 
    <button type="submit">Delete</button> 
} 

和你們各自的控制器動作:

[HttpDelete] 
public ActionResult Delete(Guid id) 
{ 
    ... 
} 
+0

非常好。精美的解釋。 非常感謝您的幫助,並走出自己的方式參加像我這樣的小菜鳥:)高度讚賞。 – Subby