日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解

發布時間:2024/4/17 asp.net 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ASP.NET MVC 5 學習教程:Details 和 Delete 方法詳解

原文?ASP.NET MVC 5 學習教程:Details 和 Delete 方法詳解

在教程的這一部分,我們將研究一下自動生成的 Details 和Delete 方法。

Details 方法

打開Movie控制器,找到Details方法。

// // GET: /Movies/Details/5 public ActionResult Details(Int32 id) {Movie movie = db.Movies.Find(id);if (movie == null){return HttpNotFound();}return View(movie); }

Code First 通過使用Find方法找到要顯示的Movie對象。如果movie對象為null,則返回HttpNotFound(),這個判斷非常有必要,試想如果有黑客要攻擊你的網站,他們可能將通過修改URL來嘗試訪問你的網站,例如將http://localhost:xxxx/Movies/Details/1 修改為http://localhost:xxxx/Movies/Details/12345 。如果你不去驗證movie是否為空,則會將數據庫錯誤返回給黑客,這樣會暴漏網站的更多信息。

Delete 和 DeleteConfirm 方法

// // GET: /Movies/Delete/5 public ActionResult Delete(Int32 id) {Movie movie = db.Movies.Find(id);if (movie == null){return HttpNotFound();}return View(movie); }// // POST: /Movies/Delete/5 [HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public ActionResult DeleteConfirmed(Int32 id) {Movie movie = db.Movies.Find(id);db.Movies.Remove(movie);db.SaveChanges();return RedirectToAction("Index"); }

第一個Delete方法并沒有刪除Movie,而是返回了可以刪除確認頁面,在確認頁面中,會創建HttpPost請求,完成Movie的刪除。直接使用HttpGet 請求來刪除Movie會打開一個安全漏洞。

真正刪除數據的方法名字是 DeleteConfirmed。下面是兩個方法的定義:

public ActionResult Delete(Int32 id)[HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public ActionResult DeleteConfirmed(Int32 id)

CLR對于重構的方法,要求方法名相同,但參數不同。然而,我們在這里用到的兩個刪除方法,他們都接收一個整形的參數,如果方法名也形同,那么就構成語法錯誤了。

為了解決這個問題,有以下幾種解決辦法:

第一種辦法是使用不同的方法名。這也是ASP.NET MVC 5 支架所采用的方法。然而,使用這種方法還有一些小問題:ASP.NET 通過地址段來映射方法名,如果將方法重命名,路由通常會找不到方法,解決的辦法已經在上面的例子中了,我們可以為DeleteConfirmed方法添加 特性ActionName("Delete")。這樣一來,當URL中包含Delete 的POST請求都會被分配給方法DeleteConfirmed。

另外一種常用解決的方法是使用相同的名字,然后為POST 方法添加一個未使用的參數。例如,一些開發者會添加FormCollection類型的參數傳遞給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 5 應用程序,你可以使用LocalDB來存儲數據,可以新建、編輯、查找、刪除 Movie數據。本教程就介紹到這里,起飛網將繼續翻譯更多ASP.NET MVC 教程及其它技術文章,期待您的關注!

posted on 2013-12-10 21:08 NET未來之路 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/lonelyxmas/p/3468190.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。