我們之前已經完成了Product的編輯功能,今天我們要來完成Product的刪除功能囉。
今日目標:
1. 完成刪除商品功能
2. 若使用者輸入錯誤刪除的Url請求,則導回Index頁面並顯示錯誤訊息
3. 修改使用Post操作來刪除商品
請依下列步驟操作:
1. Product Controller,新增Deleete()方法如下,基本上與編輯商品Edit大同小異,唯一差別是Delete我們不需要產生View,因為無論刪除是成功還是失敗,一律導回Index頁面。
2. 運行專案,針對某一項商品點選[刪除]
3. 可以看到成功刪除的畫面並顯示提示訊息
4. 如果我們在網址列中輸入一個不存在的商品id,例如剛剛刪除的6,則會顯示錯誤訊息[指定資料不存在,無法刪除,請重新操作]
5. 回到ProductController,我們在Delete()方法上方指定HttpPost
6. 此時如果操作刪除,則會得到下列錯誤訊息,這是由於原本Index頁面的Delete按鈕是使用Get操作,但由於我們剛剛將Delete()方法改為Post,所以伺服器找不到相對應的方法而產生錯誤。
7. 我們回到Index頁面,將原本使用ActionLink的刪除按鈕改為使用BeginForm(行25),並且將id設定為隱藏欄位(行27),按鈕改為直接使用HTML input元素,型態為submit
8. 各位可以重新刷新網頁,並且試試看刪除按鈕是否已經可以正常運作囉。
為什麼刪除需要使用Post呢?這是因為刪除是很重要的操作,如果使用者直接在網址列輸入網址就可以刪除的話,其實是很危險的一件事情,所以我們選擇使用Post來完成。
*今天的原始碼請參考這裡