起初我創造只用Html.ActionLink
方法刪除鏈接。但後來我碰到一篇文章,說這是錯誤的。不應該這樣使用。然後建議Master - > Detail的方式。但那似乎很愚蠢。應該有一種方法讓我有一個刪除鏈接(帶有「你確定」提示),但仍然不是安全漏洞。對?在MVC3中創建刪除鏈接的正確方法是什麼?
回答
是的,使用GET方法刪除數據是不好的做法。你需要使用POST方法,它可以完成,例如使用form或jquery/javascript。但請注意,如果您使用帶有附加Promt的簡單鏈接,則用戶可以單擊中心按鈕並刪除數據,否則JavaScript可能會被禁用。此外,這也是一個安全問題,有人可能會給你鏈接,你從服務器中刪除一些數據。
例子:
<a href="/controller/delete/1" onclick="$.post(this.href); return false;">Delete</a>
如果服務器獲取GET到/控制器/刪除/ X,則成爲了一個POST形式的確認頁(此表中,我們把兩個按鈕Yes
和No
,第一個按鈕提交表單隱藏字段)。如果服務器獲得POST(或可能是DELETE)請求,則執行刪除操作。
你會想要確保您在請求中包含RequestVerificationToken,在您的控制器方法中包含[ValidateAntiForgeryToken]。 http://stackoverflow.com/questions/2906754/how-can-i-supply-an-antiforgerytoken-when-posting-json-data-using-ajax –
在下面的文章中,他們描述了一個很好的方式來做你正在尋找的東西: Simple jQuery Delete Link For ASP.NET MVC。
但我認爲你實際尋找的替代方案是: ASP.NET MVC Delete ActionLink with confirm。
所以你有兩個選擇,我希望它對你有幫助。
好的鏈接,但最好提供和摘錄和/或解釋在你的回答中(換句話說,如果鏈接斷裂,你的答案應該能夠獨立存在)。 – McGarnagle
你是對的,但文章是自包含的,他們提供了理論依據和實際執行,而如果我摘抄它,它會給一些想法,但搶問人了從基礎知識。這傢伙並沒有提出非常具體的問題,因此整篇文章會做得更好。至少在我看來,它是如此。當問題非常具體時 - 答案將非常具體(閱讀具體摘錄或只是陳述個人經驗)。感謝您的注意。 –
這個問題與鏈接或ActionLink或類似的東西無關。問題是你不應該有一個在HttpGet請求上刪除的動作方法。
至於你爲什麼不應該這樣做。想象一下,你的老闆已經在你的在線員工資料中輸入了一個譴責。如果你碰巧知道,這個應用程序會刪除記錄與Get請求,那麼你只需要創建一個特製的網頁,其中img標籤包含URL刪除您的譴責,然後把它放在公司主頁上。最終,有權刪除這些條目的人可以訪問網頁並poof ..您有清晰的記錄。
這似乎沒有那麼糟糕。你只是提高了你的地位。但是想象一下,你的同事是你瘋了,他知道了類似的伎倆,會讓他欺騙你的老闆爲降低你的薪水。
不那麼好笑了。
允許這些類型或操作是不安全的,因爲它們可以在用戶不知道自己在做什麼的情況下觸發。
- 1. 項目創建/刪除,什麼是正確的方法?
- 2. 什麼是從鏈接中刪除has_one關聯的正確方法
- 3. 在ASP.Net MVC3中創建條件表單的正確方法是什麼?
- 4. 什麼是刪除多對多連接的正確方法?
- 5. 這是刪除C中鏈接列表的正確方法嗎?
- 6. 在PLINQO中刪除M:M的正確方法是什麼?
- 7. 在網站中鏈接圖像的正確方法是什麼?
- 8. 在Mongoid中鏈接map_reduce調用的正確方法是什麼?
- 9. 在d3中鏈接轉換的正確方法是什麼?
- 10. 在MVC3中設置遊標CSS的正確方法是什麼?
- 11. 在Silverlight RIA Service中創建PresentationModel的正確方法是什麼?
- 12. 什麼是在github中創建請求的正確方法
- 13. 什麼是在WPF中創建UI設置的正確方法?
- 14. 什麼是在Java中創建日期的正確方法?
- 15. 什麼是在Swift中創建NSWindowController Singleton的正確方法?
- 16. 什麼是在Nativescript中創建組件的正確方法?
- 17. 什麼是在CosmosDB中創建表的正確方法?
- 18. 在Java中創建對象的正確方法是什麼?
- 19. 在C#中創建RTF文件的正確方法是什麼?
- 20. 什麼是在Android中創建菜單的正確方法?
- 21. 在Sprite Kit中創建按鈕的正確方法是什麼?
- 22. 什麼是從世界中刪除身體的正確方法?
- 23. 什麼是刪除數組中指針的正確方法?
- 24. 從DataTable中添加/刪除DataRow的正確方法是什麼
- 25. 從列表中刪除boost :: shared_ptr的正確方法是什麼?
- 26. 在Drupal中創建頁腳鏈接區域的正確方法
- 27. 刪除QStandardItemModel的多個索引的正確方法是什麼?
- 28. 在MooseX :: Declare中創建BUILD方法的正確方法是什麼?
- 29. 什麼是使用add_rewrite_rule刪除(問號)的正確方法?
- 30. 什麼是刪除動態數組的正確方法?
可能的重複[ASP.NET MVC刪除ActionLink與確認](http://stackoverflow.com/questions/4682107/asp-net-mvc-delete-actionlink-with-confirm) – McGarnagle