在第一彈裡面 我仗著 VS 的威能 三兩下的搞定了 基本五VIEW
而我只是很快樂的截了一堆圖 根本沒寫什麼 CODE
這回要慢慢來欣賞 MVC 中 Request 的奇幻漂流
在這之前 我們先來看看 Controller 中的 奧秘
Controller 是整個 ASP.NET MVC 的交通樞紐
負責接收前端發送過來的 HTTP Request (GET 或 POST) 然後交給 Model 處理 處理完之後再決定返回哪個 Action
如果是 WinForm 中毒很深的末期患者 一開始可能 完全不知道 GET 跟 POST 到底啥是啥 啥要幹啥 啥又是啥 啥要是要幹啥
請遺忘微軟的大騙局 「postback」 這個東東吧
真相是...
表單 form method = post 的時候 submit表單 會走 POST 它會加密資料
其他時候 "幾乎" 都走 GET 它不會加密資料
基於秘密口訣:Model要肥、Controller要飄逸、View要蠢
Controller 請盡量只讓它作 接受跟回應 其他複雜的邏輯請交給 Model
但是我們看看 VS 自動幫我們產生的 Controller 雖然五臟俱全 但是把 DB Access 也混在其中了
碰巧 DB Access 的操作都很簡單 所以給人一種 放這在這邊寫好像很 OK
但是這種做法不可取 跟當初 WinForm 一個 Click 事件環遊宇宙幾千行一樣 義大利麵式的寫法 不可接受啊啊啊~
抽層絕對是降低效能的 但是那怕是犧牲效能 也要極盡所能的提升可維護性!
血輪眼的各位一定有發現 Details、Edit跟Delete的 GET Action 根本是一模一樣的重複程式碼 重複代碼不可接受啊啊啊~
一陣攪和之後 Controller 被大改造
只剩下單純的 參數傳遞 跟 決定回應的 Action
個人喜好 GET 放一邊 POST 放一邊 並且抽掉重複 CODE
現在依靠 CriminalHelper 類別 進行 DB Access
日後要增加查詢就改 CriminalHelper ,要改顯示內容就改 View , Controller 感覺上應該改變不大
另外 MVC 之所以可以這樣很神奇的 穿越來穿越去 是因為強大的 model binding 機制存在
這又是另一段 偉大的 奇幻之旅了
沒有留言:
張貼留言