本篇文章為大家展示了ASP.NET MVC4中怎么查詢詳細信息和刪除記錄,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
創(chuàng)新互聯(lián)建站科技有限公司專業(yè)互聯(lián)網(wǎng)基礎(chǔ)服務(wù)商,為您提供成都西信服務(wù)器托管,高防服務(wù)器,成都IDC機房托管,成都主機托管等互聯(lián)網(wǎng)服務(wù)。查詢詳細信息和刪除記錄打開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方法來搜索數(shù)據(jù)。一個重要的安全功能內(nèi)置到了方法中。方法首先驗證Find方法已經(jīng)找到了一部電影,然后再執(zhí)行其它代碼。例如,黑客可以通過更改http://localhost:xxxx/Movies/Details/1到http://localhost:xxxx/Movies/Details/12345 (或某些其它值,不代表實際影片的值)從而使得鏈接URL 出現(xiàn)錯誤。如果您沒有檢測是否找到了Movie, null Movie會導(dǎo)致出現(xiàn)數(shù)據(jù)錯誤。
查看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 請求執(zhí)行刪除操作(或者執(zhí)行編輯操作,創(chuàng)建操作或者更改數(shù)據(jù)的任何其它操作) 開辟了一個安全漏洞。對此的詳細信息,請參閱斯蒂芬 · 瓦爾特的博客ASP.NET MVC Tip #46 — Don't use Delete Links because they create Security Holes.
將刪除數(shù)據(jù)的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)重載方法時,需要方法具有獨特的簽名 (方法名稱相同但不同的參數(shù)列表)。但是,在這里您需要兩種刪除方法 — — 一個 GET方法和一個POST方法它們都具有相同的簽名。(他們都需要接受一個整數(shù)作為參數(shù))。
要解決這一點,可以有幾種辦法。一是使用不同的方法名稱。這是框架代碼在前面的示例中所使用的方法。然而,這就帶來了一個小問題: ASP.NET 將部分的 URL按名稱映射到操作方法,如果您重命名了方法,通常Routing將無法找到該方法。解決方法是您在示例中看到的,將ActionName("Delete")屬性添加到DeleteConfirmed 方法。這會有效的執(zhí)行Routing系統(tǒng)的Url映射,這樣一個包含/Delete/的 POST 請求的URL 將找到DeleteConfirmed 方法。
另一個常見的方法,來避免具有相同名稱和簽名的方法,是人為地改變POST 方法,包括未使用參數(shù)的簽名。例如,有些開發(fā)人員添加參數(shù)類型 FormCollection,F(xiàn)ormCollection是會傳遞給 POST 方法的,然后根本不使用此參數(shù):
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"); }
您現(xiàn)在有一個完整的 ASP.NET MVC 應(yīng)用程序并在本地的 DB 數(shù)據(jù)庫中存儲數(shù)據(jù)。您可以創(chuàng)建、 讀取、 更新、 刪除和搜索電影。
上述內(nèi)容就是ASP.NET MVC4中怎么查詢詳細信息和刪除記錄,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。