Asp.Net MVC4入門指南(9):查詢詳細信息和刪除記錄


在本教程中,您將查看自動生成的DetailsDelete方法。

查詢詳細信息和刪除記錄

打開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方法已經找到了一部電影,然后再執行其它代碼。例如,黑客可以通過更改http://localhost:xxxx/Movies/Details/1http://localhost:xxxx/Movies/Details/12345 (或某些其它值,不代表實際影片的值)從而使得鏈接URL 出現錯誤。如果您沒有檢測是否找到了Movie, null Movie會導致出現數據錯誤。

查看DeleteDeleteConfirmed方法。

// 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");
}

請注意,DeleteHTTP 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 方法,包括未使用參數的簽名。例如,有些開發人員添加參數類型 FormCollectionFormCollection是會傳遞給 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 數據庫中存儲數據。您可以創建、 讀取、 更新、 刪除和搜索電影。

clip_image001

如果您想要部署應用程序,最好先在您本地的IIS 7 服務器上測試一下您的應用程序。您可以使用此 Web Platform Installer 鏈接啟用IIS服務器的 ASP.NET 應用程序的設置。請參閱下面的部署鏈接:

· Test your ASP.NET MVC or WebForms Application on IIS 7 in 30 seconds

· ASP.NET Deployment Content Map

· Enabling IIS 7.x

· Web Application Projects Deployment

現在鼓勵您開始學習中級內容 Creating an Entity Framework Data Model for an ASP.NET MVC ApplicationMVC Music Store 教程, 瀏覽 ASP.NET articles on MSDN,的文章,再看看很多的視頻和資源:http://asp.net/mvc來了解更多關於 ASP.NET MVC 的信息 ! ASP.NET MVC forums 論壇是一個好地方,可以用來問您想要知道的問題。

以上的查詢詳細信息和刪除記錄示例是為了幫助大家更好的掌握MVC的知識,在進行MVC開發時,使用開發工具也可以大大提高工作效率。使用 ComponentOne Studio ASP.NET MVC 這款輕量級控件,在效率大幅提高的同時,還能滿足用戶的所有需求。

 完整文檔下載:Asp.Net MVC4入門指南.pdf

-----------------------------------------------------------------------------------------------------------------------------------------------

譯者注:

本系列共9篇文章,翻譯自Asp.Net MVC4 官方教程,由於本系列文章言簡意賅,篇幅適中,從一個示例開始講解,全文最終完成了一個管理影片的小系統,非常適合新手入門Asp.Net MVC4,並由此開始開發工作。9篇文章為:

1. Asp.Net MVC4 入門介紹

· 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4

· 譯文地址:http://www.cnblogs.com/powertoolsteam/archive/2012/11/01/2749906.html

2. 添加一個控制器

· 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-controller

· 譯文地址:http://www.cnblogs.com/powertoolsteam/archive/2012/11/02/2751015.html

3. 添加一個視圖

· 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-view

· 譯文地址:http://www.cnblogs.com/powertoolsteam/archive/2012/11/06/2756711.html

4. 添加一個模型

· 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-model

· 譯文地址:http://www.cnblogs.com/powertoolsteam/archive/2012/12/17/2821495.html

5. 從控制器訪問數據模型

· 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/accessing-your-models-data-from-a-controller

· 譯文地址:http://www.cnblogs.com/powertoolsteam/archive/2013/01/11/2855935.html

6. 驗證編輯方法和編輯視圖

· 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-edit-methods-and-edit-view

· 譯文地址:http://www.cnblogs.com/powertoolsteam/archive/2013/01/24/2874622.html

7. 給電影表和模型添加新字段

· 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-new-field-to-the-movie-model-and-table

· 譯文地址:http://www.cnblogs.com/powertoolsteam/archive/2013/02/26/2933105.html

8. 給數據模型添加校驗器

· 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-validation-to-the-model

· 譯文地址:http://www.cnblogs.com/powertoolsteam/archive/2013/03/05/2944030.html 

9. 查詢詳細信息和刪除記錄

· 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-details-and-delete-methods

· 譯文地址:http://www.cnblogs.com/powertoolsteam/archive/2013/03/07/2948000.html

10.第三方控件Studio for ASP.NET Wijmo MVC4 工具應用

· 地址:http://www.cnblogs.com/powertoolsteam/archive/2013/05/09/3068699.html

 

相關閱讀:

微軟 Build 2017 開發者大會:Azure 與 AI 的快速發展

是什么讓C#成為最值得學習的編程語言

從Visual Studio看微軟20年技術變遷

C#開發人員應該知道的13件事情

Visual Studio 2017正式版發布全紀錄

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM