2012-09-19 46 views
0

起初我創造只用Html.ActionLink方法刪除鏈接。但後來我碰到一篇文章,說這是錯誤的。不應該這樣使用。然後建議Master - > Detail的方式。但那似乎很愚蠢。應該有一種方法讓我有一個刪除鏈接(帶有「你確定」提示),但仍然不是安全漏洞。對?在MVC3中創建刪除鏈接的正確方法是什麼?

+0

可能的重複[ASP.NET MVC刪除ActionLink與確認](http://stackoverflow.com/questions/4682107/asp-net-mvc-delete-actionlink-with-confirm) – McGarnagle

回答

1

是的,使用GET方法刪除數據是不好的做法。你需要使用POST方法,它可以完成,例如使用form或jquery/javascript。但請注意,如果您使用帶有附加Promt的簡單鏈接,則用戶可以單擊中心按鈕並刪除數據,否則JavaScript可能會被禁用。此外,這也是一個安全問題,有人可能會給你鏈接,你從服務器中刪除一些數據。

例子:

<a href="/controller/delete/1" onclick="$.post(this.href); return false;">Delete</a> 

如果服務器獲取GET到/控制器/刪除/ X,則成爲了一個POST形式的確認頁(此表中,我們把兩個按鈕YesNo,第一個按鈕提交表單隱藏字段)。如果服務器獲得POST(或可能是DELETE)請求,則執行刪除操作。

+0

你會想要確保您在請求中包含RequestVerificationToken,在您的控制器方法中包含[ValidateAntiForgeryToken]。 http://stackoverflow.com/questions/2906754/how-can-i-supply-an-antiforgerytoken-when-posting-json-data-using-ajax –

0

在下面的文章中,他們描述了一個很好的方式來做你正在尋找的東西: Simple jQuery Delete Link For ASP.NET MVC

但我認爲你實際尋找的替代方案是: ASP.NET MVC Delete ActionLink with confirm

所以你有兩個選擇,我希望它對你有幫助。

+0

好的鏈接,但最好提供和摘錄和/或解釋在你的回答中(換句話說,如果鏈接斷裂,你的答案應該能夠獨立存在)。 – McGarnagle

+0

你是對的,但文章是自包含的,他們提供了理論依據和實際執行,而如果我摘抄它,它會給一些想法,但搶問人了從基礎知識。這傢伙並沒有提出非常具體的問題,因此整篇文章會做得更好。至少在我看來,它是如此。當問題非常具體時 - 答案將非常具體(閱讀具體摘錄或只是陳述個人經驗)。感謝您的注意。 –

1

這個問題與鏈接或ActionLink或類似的東西無關。問題是你不應該有一個在HttpGet請求上刪除的動作方法。

至於你爲什麼不應該這樣做。想象一下,你的老闆已經在你的在線員工資料中輸入了一個譴責。如果你碰巧知道,這個應用程序會刪除記錄與Get請求,那麼你只需要創建一個特製的網頁,其中img標籤包含URL刪除您的譴責,然後把它放在公司主頁上。最終,有權刪除這些條目的人可以訪問網頁並poof ..您有清晰的記錄。

這似乎沒有那麼糟糕。你只是提高了你的地位。但是想象一下,你的同事是你瘋了,他知道了類似的伎倆,會讓他欺騙你的老闆爲降低你的薪水。

不那麼好笑了。

允許這些類型或操作是不安全的,因爲它們可以在用戶不知道自己在做什麼的情況下觸發。

相關問題