標籤

ASP.NET MVC (29) Visual C# (15) JQuery (10) Plugins (8) JQuery Plugins (6) JavaScript (6) MySQL (5) CSS (4) LinQ (4) Mac OS (4) CentOS (3) Design Pattern (3) Entity Framework (3) IIS (3) Python (3) Windows (3) php (3) Docker (2) LAMP (2) SQL Server (2) WCF (2) .NET (1) .NET Core (1) AWS (1) Browser (1) GIS (1) IE (1) Internet Security (1) Linux (1) Platform (1) React (1) SEO (1) Testing (1) VMware (1) Windows 7 (1) cookie (1) curl (1) laravel (1) phpBB (1) session (1) 中古屋 (1) 透天 (1) 閒言閒語 (1) 面試 (1) 鳥松 (1)

2014年10月12日 星期日

使用ASP.NET MVC 實作購物網站 (十二) - Product的刪除功能

我們完成了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來完成。


*今天的原始碼請參考這裡


1 則留言:

  1. 編譯器錯誤訊息: CS1973: 'System.Web.Mvc.HtmlHelper' 沒有名稱為 'Hidden' 的適用方法,但似乎有使用該名稱的擴充方法。擴充方法不可以是動態分派的。請考慮將動態引數轉型,或不用擴充方法語法來呼叫擴充方法。


    請問是哪裡有問題呢?

    回覆刪除