Asp.Net MVC4入門指南(9):查詢詳細資訊和刪除記錄
在本教程中,您將檢視自動生成的Details
和Delete
方法。
查詢詳細資訊和刪除記錄
開啟Movie控制器並檢視Details方法。
public ActionResult Details(int id = 0) { Movie movie = db.Movies.Find(id); if (movie == null) { return HttpNotFound(); } return View(movie); }
Code First 使得您可以輕鬆的使用Find
方法來搜尋資料。一個重要的安全功能內建到了方法中。方法首先驗證Find
檢視Delete
和DeleteConfirmed
方法。
// GET: /Movies/Delete/5 public ActionResult Delete(int id = 0) { Movie movie = db.Movies.Find(id); if (movie == null) { return HttpNotFound(); } return View(movie); } // // POST: /Movies/Delete/5 [HttpPost, ActionName("Delete")] public ActionResult DeleteConfirmed(int id = 0) { Movie movie = db.Movies.Find(id); if (movie == null) { return HttpNotFound(); } db.Movies.Remove(movie); db.SaveChanges(); return RedirectToAction("Index"); }
請注意,Delete
的HTTP Get
方法不會刪除指定的電影,它返回刪除電影的檢視,您可以在此檢視中提交 (HttpPost
) 刪除電影。如果使用GET 請求執行刪除操作(或者執行編輯操作,建立操作或者更改資料的任何其它操作) 開闢了一個安全漏洞。對此的詳細資訊,請參閱斯蒂芬 · 瓦爾特的部落格ASP.NET MVC Tip #46 — Don't use Delete Links because they create Security Holes.
將刪除資料的HttpPost
方法命名為唯一簽名或名稱的 DeleteConfirmed
方法。這兩個方法的簽名如下所示:
// GET: /Movies/Delete/5 public ActionResult Delete(int id = 0) // // POST: /Movies/Delete/5 [HttpPost, ActionName("Delete")] public ActionResult DeleteConfirmed(int id = 0)
公共語言執行時 (CLR)過載方法時,需要方法具有獨特唯一的簽名 (方法名稱相同但不同的引數列表)。但是,在這裡您需要兩種刪除方法 — — 一個 GET方法和一個POST方法它們都具有相同的簽名。(他們都需要接受一個整數作為引數)。
要解決這一點,可以有幾種辦法。一是使用不同的方法名稱。這是框架程式碼在前面的示例中所使用的方法。然而,這就帶來了一個小問題: ASP.NET 將部分的 URL按名稱對映到操作方法,如果您重新命名了方法,通常Routing將無法找到該方法。解決方法是您在示例中看到的,將ActionName("Delete")
屬性新增到DeleteConfirmed
方法。這會有效的執行Routing系統的Url對映,這樣一個包含/Delete/的 POST 請求的URL 將找到DeleteConfirmed
方法。
另一個常見的方法,來避免具有相同名稱和簽名的方法,是人為地改變POST 方法,包括未使用引數的簽名。例如,有些開發人員新增引數型別 ,是會傳遞給 POST 方法的,然後根本不使用此引數:
public ActionResult Delete(FormCollection fcNotUsed, int id = 0) { Movie movie = db.Movies.Find(id); if (movie == null) { return HttpNotFound(); } db.Movies.Remove(movie); db.SaveChanges(); return RedirectToAction("Index"); }
總結
您現在有一個完整的 ASP.NET MVC 應用程式並在本地的 DB 資料庫中儲存資料。您可以建立、 讀取、 更新、 刪除和搜尋電影。
如果您想要部署應用程式,最好先在您本地的IIS 7 伺服器上測試一下您的應用程式。您可以使用此 Web Platform Installer 連結啟用IIS伺服器的 ASP.NET 應用程式的設定。請參閱下面的部署連結:
以上的查詢詳細資訊和刪除記錄示例是為了幫助大家更好的掌握MVC的知識,在進行MVC開發時,使用開發工具也可以大大提高工作效率。使用 ComponentOne Studio ASP.NET MVC這款輕量級控制元件,在效率大幅提高的同時,還能滿足使用者的所有需求。
-----------------------------------------------------------------------------------------------------------------------------------------------
譯者注:
本系列共9篇文章,翻譯自Asp.Net MVC4 官方教程,由於本系列文章言簡意賅,篇幅適中,從一個示例開始講解,全文最終完成了一個管理影片的小系統,非常適合新手入門Asp.Net MVC4,並由此開始開發工作。9篇文章為:
1. Asp.Net MVC4 入門介紹
2. 新增一個控制器
3. 新增一個檢視
4. 新增一個模型
5. 從控制器訪問資料模型
6. 驗證編輯方法和編輯檢視
7. 給電影表和模型新增新欄位
8. 給資料模型新增校驗器
9. 查詢詳細資訊和刪除記錄
10.第三方控制元件Studio for ASP.NET Wijmo MVC4 工具應用
相關閱讀: