使用 ASP.NET MVC 在 15 分鐘內建立影片資料庫應用程式 (C#)

作者:Stephen Walther

下載程序代碼

Stephen Walther 從頭到尾建置整個資料庫驅動 ASP.NET MVC 應用程式。 本教學課程是不熟悉 ASP.NET MVC Framework 的人員,以及想要瞭解建置 ASP.NET MVC 應用程式程式的人員的絕佳簡介。

本教學課程的目的是要讓您了解建置 ASP.NET MVC 應用程式時所要的「喜歡」。 在本教學課程中,我從頭到尾建置整個 ASP.NET MVC應用程式。 我示範如何建置簡單的資料庫驅動應用程式,說明如何列出、建立和編輯資料庫記錄。

為了簡化建置應用程式的程序,我們將利用Visual Studio 2008的 Scaffolding 功能。 我們將讓 Visual Studio 產生控制器、模型和檢視的初始程式代碼和內容。

如果您已使用 Active Server Pages 或 ASP.NET,您應該會發現 ASP.NET MVC 非常熟悉。 ASP.NET MVC 檢視非常類似 Active Server Pages 應用程式中的頁面。 而且,就像傳統的 ASP.NET Web Forms 應用程式一樣,ASP.NET MVC 可讓您完整存取 .NET Framework 所提供的一組豐富語言和類別。

我們希望本教學課程可讓您瞭解建置 ASP.NET MVC 應用程式的體驗,與建置 Active Server Pages 或 ASP.NET Web Forms 應用程式的體驗相似且不同。

電影資料庫應用程式概觀

因為我們的目標是要讓專案保持簡單,所以我們會建置非常簡單的Movie Database 應用程式。 我們的簡單電影資料庫應用程式可讓我們執行三件事:

  1. 列出一組電影資料庫記錄
  2. 建立新的電影資料庫記錄
  3. 編輯現有的電影資料庫記錄

同樣地,由於我們想要讓專案保持簡單,因此我們將利用建置應用程式所需的 ASP.NET MVC 架構功能數目下限。 例如,我們不會利用 Test-Driven 開發。

若要建立應用程式,我們需要完成下列步驟:

  1. 建立 ASP.NET MVC Web 應用程式專案
  2. 建立資料庫
  3. 建立資料庫模型
  4. 建立 ASP.NET MVC 控制器
  5. 建立 ASP.NET MVC 檢視

準備工作

您需要 Visual Studio 2008 或 Visual Web Developer 2008 Express,才能建置 ASP.NET MVC 應用程式。 您也需要下載 ASP.NET MVC架構。

如果您沒有擁有 Visual Studio 2008,您可以從此網站下載 90 天的 Visual Studio 2008 試用版:

https://msdn.microsoft.com/vs2008/products/cc268305.aspx

或者,您可以使用 Visual Web Developer Express 2008 建立 ASP.NET MVC 應用程式。 如果您決定使用 Visual Web Developer Express,則必須安裝 Service Pack 1。 您可以從此網站下載 Visual Web Developer 2008 Express with Service Pack 1:

https://www.microsoft.com/downloads/details.aspx?FamilyId=BDB6391C-05CA-4036-9154-6DF4F6DEBD14&displaylang=en

安裝 Visual Studio 2008 或 Visual Web Developer 2008 之後,您必須安裝 ASP.NET MVC 架構。 您可以從下列網站下載 ASP.NET MVC 架構:

https://www.asp.net/mvc/

注意

您可以利用 Web 平台安裝程式,而不是個別下載 ASP.NET 架構和 ASP.NET MVC 架構。 Web Platform Installer 是一個應用程式,可讓您輕鬆地管理已安裝的應用程式是您的電腦:

https://www.microsoft.com/web/gallery/Install.aspx

建立 ASP.NET MVC Web 應用程式專案

讓我們從在 Visual Studio 2008 中建立新的 ASP.NET MVC Web 應用程式項目開始。 選取選單選項 [檔案]、[新增專案], 您會看到圖 1 中的 [新增專案] 對話框。 選取 C# 作為程式設計語言,然後選取 ASP.NET MVC Web 應用程式專案範本。 為您的專案命名MovieApp,然後按下 [確定] 按鈕。

[新增專案] 對話框的螢幕快照,其中顯示 [名稱] 字段中已選取 [ASP 點 Net MVC Web 應用程式] 範本和 [電影應用程式]。

圖 01:[新增專案] 對話框 (按兩下即可檢視完整大小的影像)

請確定您從 [新增專案] 對話框頂端的下拉式清單中選取 [.NET Framework 3.5],否則不會出現 ASP.NET MVC Web 應用程式項目範本。

每當您建立新的 MVC Web 應用程式專案時,Visual Studio 會提示您建立個別的單元測試專案。 圖 2 中的對話框隨即出現。 因為我們不會在本教學課程中建立測試,因為時間限制 (,所以是,我們應該覺得這) 選取 [ ] 選項,然後按兩下 [ 確定 ] 按鈕。

注意

Visual Web Developer 不支持測試專案。

[建立單元測試專案] 的螢幕快照,其中顯示 [否],但不建立選取的單元測試專案。

圖 02:[建立單元測試專案] 對話框 (按兩下以檢視完整大小的影像)

ASP.NET MVC 應用程式有一組標準資料夾:模型、檢視和控制器資料夾。 您可以在 [方案總管] 視窗中看到這個標準資料夾集。 我們需要將檔案新增至每個模型、檢視和控制器資料夾,才能建置電影資料庫應用程式。

當您使用 Visual Studio 建立新的 MVC 應用程式時,您會取得範例應用程式。 因為我們想要從頭開始,所以我們需要刪除此範例應用程式的內容。 您需要刪除下列檔案與下列資料夾:

  • Controllers\HomeController.cs
  • Views\Home

建立資料庫

我們需要建立資料庫來保存電影資料庫記錄。 幸運的是,Visual Studio 包含名為 SQL Server Express 的免費資料庫。 請遵循下列步驟來建立資料庫:

  1. 以滑鼠右鍵按兩下 方案總管 視窗中的 [App_Data] 資料夾,然後選取選單選項[新增]、[新增專案]。
  2. 選取 [數據] 類別,然後選取 SQL Server 資料庫範本, (請參閱圖 3) 。
  3. 將您的新資料庫命名為 MoviesDB.mdf ,然後按下 [ 新增 ] 按鈕。

建立資料庫之後,您可以按兩下位於 App_Data資料夾中的MoviesDB.mdf檔案來連線到資料庫。 按兩下MoviesDB.mdf 檔案會開啟 [伺服器總管] 視窗。

注意

在 Visual Web 開發人員的情況下,[伺服器總管] 視窗會命名為 [資料庫總管] 視窗。

[新增專案] 視窗的螢幕快照,其中顯示已選取 [SQL Server 資料庫],並在 [名稱] 方塊中輸入Movies DB dot m d f。

圖 03:建立 Microsoft SQL Server 資料庫 (按兩下即可檢視完整大小的映射)

接下來,我們需要建立新的資料庫數據表。 從 [Sever Explorer] 視窗內,以滑鼠右鍵按兩下 [資料表] 資料夾,然後選取功能表選項 [新增數據表]。 選取此功能表選項會開啟資料庫數據表設計工具。 建立下列資料庫資料列:

資料行名稱 資料類型 允許 Null
Id Int False
標題 Nvarchar (100) False
導演 Nvarchar (100) False
DateReleased DateTime False

第一個數據行 Id 資料行有兩個特殊屬性。 首先,您必須將 [標識符] 資料行標示為主鍵數據行。 選取 [標識符] 數據行之後,按兩下 [ 設定主鍵 ] 按鈕, (它看起來像索引鍵的圖示) 。 其次,您必須將 [標識符] 資料行標示為 [識別] 數據行。 在 [數據行 屬性視窗 中,向下捲動至 [識別規格] 區段並展開它。 將 Is Identity 屬性變更為 [是] 值。 當您完成時,數據表看起來應該像圖 4。

Microsoft Visual Studio 的螢幕快照,其中顯示已完成的Movies資料庫數據表,並將Is Identity 屬性設定為 [是]。

圖 04:Movies 資料庫資料表 (按兩下即可檢視大小完整的影像)

最後一個步驟是儲存新的數據表。 按兩下 [儲存] 按鈕 (磁碟) 圖示,並將新數據表命名為Movies。

完成建立數據表之後,請將一些電影記錄新增至數據表。 以滑鼠右鍵按兩下 [伺服器總管] 視窗中的Movies資料表,然後選取 [ 顯示資料表資料] 選單選項。 輸入您最愛的電影清單, (請參閱圖 5) 。

Microsoft Visual Studio 視窗的螢幕快照,其中顯示輸入電影信息的數據表,包括標識碼、標題、Director 和發行日期。

圖 05:輸入電影記錄 (按鍵即可檢視全尺寸影像)

建立模型

接下來,我們需要建立一組類別來代表我們的資料庫。 我們需要建立資料庫模型。 我們將利用 Microsoft Entity Framework 自動產生資料庫模型的類別。

注意

ASP.NET MVC 架構未系結至 Microsoft Entity Framework。 您可以利用各種物件關係型對應 (OR/M) 工具來建立資料庫模型類別,包括 LINQ to SQL、Subsonic 和 NHibernate。

請遵循下列步驟來啟動實體數據模型精靈:

  1. 以滑鼠右鍵按兩下 [方案總管] 視窗中的 [Models] 資料夾,然後選取功能表選項 [新增]、[新增專案]。
  2. 選取 [數據] 類別,然後選取 [實體數據模型] 範本 ADO.NET。
  3. 為數據模型命名 為MoviesDBModel.edmx ,然後按兩下 [ 新增 ] 按鈕。

按兩下 [新增] 按鈕之後,[實體數據模型精靈] 隨即出現, (請參閱圖 6) 。 請遵循下列步驟來完成精靈:

  1. 在 [ 選擇模型內容] 步驟中,選取 [ 從資料庫產生] 選項。
  2. 在 [ 選擇您的數據連線 ] 步驟中,使用 MoviesDB.mdf 數據連線,以及連線設定的名稱 MoviesDBEntities 。 按 [下一步] 按鈕。
  3. 在 [ 選擇您的資料庫物件] 步驟中,展開 [數據表] 節點,選取 [電影] 數據表。 輸入命名空間 MovieApp.Models ,然後按兩下 [ 完成] 按鈕。

[實體數據模型精靈] 方塊的螢幕快照,其中顯示已選取 [從資料庫產生] 圖示。

圖 06:使用 [實體數據模型精靈] 產生資料庫模型, (按兩下即可檢視完整大小的映像)

完成實體數據模型精靈之後,實體數據模型 Designer 隨即開啟。 Designer 應該會顯示Movies資料庫數據表, (請參閱圖 7) 。

實體數據模型 Designer 的螢幕快照,其中顯示Movies資料庫數據表。

圖 07:實體數據模型 Designer (按兩下即可檢視完整大小的影像)

我們需要在繼續之前進行一項變更。 實體數據精靈會產生名為 Movies 的模型類別,代表Movies資料庫數據表。 由於我們將使用Movies類別來代表特定電影,因此我們必須將類別的名稱修改為Movie,而不是 (單數而非複數) 。

按兩下設計工具介面上的類別名稱,並將類別的名稱從Movies變更為Movie。 進行這項變更之後,按兩下 [ 儲存] 按鈕 (磁碟) 圖示來產生Movie類別。

建立 ASP.NET MVC 控制器

下一個步驟是建立 ASP.NET MVC 控制器。 控制器負責控制使用者如何與 ASP.NET MVC 應用程式互動。

遵循這些步驟:

  1. 在 [方案總管] 視窗中,以滑鼠右鍵按兩下 [控制器] 資料夾,然後選取功能表選項 [新增]、[控制器]。
  2. 在 [新增控制器] 對話框中,輸入名稱 HomeController ,並核取標示 為 [建立]、[更新] 和 [詳細數據] 案例 的複選框, (請參閱圖 8) 。
  3. 按兩下 [ 新增 ] 按鈕,將新的控制器新增至您的專案。

完成這些步驟之後,就會建立清單 1 中的控制器。 請注意,其中包含名為 Index、Details、Create 和 Edit 的方法。 在下列各節中,我們將新增必要的程序代碼,以取得這些方法才能運作。

[新增控制器] 方塊的螢幕快照,其中顯示已輸入的主控制器,並核取 [新增動作] 方塊。

圖 08:新增 ASP.NET MVC 控制器 (按兩下以檢視大小完整的映像)

清單 1 – Controllers\HomeController.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

using System.Web.Mvc.Ajax; 

namespace MovieApp.Controllers

{

    public class HomeController : Controller

    {

        //

        // GET: /Home/ 

        public ActionResult Index()

        {

            return View();

        } 

        //

        // GET: /Home/Details/5 

        public ActionResult Details(int id)

        {

            return View();

        } 

        //

        // GET: /Home/Create 

        public ActionResult Create()

        {

            return View();

        }  

        //

        // POST: /Home/Create 

        [AcceptVerbs(HttpVerbs.Post)]

        public ActionResult Create(FormCollection collection)

        {

            try

            {

                // TODO: Add insert logic here 

                return RedirectToAction("Index");

            }

            catch

            {

                return View();

            }

        } 

        //

        // GET: /Home/Edit/5

        public ActionResult Edit(int id)

        {

            return View();

        } 

        //

        // POST: /Home/Edit/5 

        [AcceptVerbs(HttpVerbs.Post)]

        public ActionResult Edit(int id, FormCollection collection)

        {

            try

            {

                // TODO: Add update logic here

                return RedirectToAction("Index");

            }

            catch

            {

                return View();

            }

        }

    }

}

列出資料庫記錄

Home 控制器的 Index () 方法是 ASP.NET MVC 應用程式的預設方法。 當您執行 ASP.NET MVC 應用程式時,Index () 方法是呼叫的第一個控制器方法。

我們將使用 Index () 方法來顯示Movies 資料庫數據表中的記錄清單。 我們將利用我們稍早建立的資料庫模型類別,使用 Index () 方法來擷取電影資料庫記錄。

我已在清單 2 中修改 HomeController 類別,使其包含名為 _db 的新私人欄位。 MoviesDBEntities 類別代表我們的資料庫模型,我們將使用此類別來與資料庫通訊。

我也修改了清單 2 中的 Index () 方法。 Index () 方法會使用MoviesDBEntities 類別,從Movies資料庫數據表擷取所有電影記錄。 表達式 _db。MovieSet.ToList () 會從Movies 資料庫數據表傳回所有電影記錄的清單。

影片清單會傳遞至檢視。 傳遞至 View () 方法的任何項目都會以檢視數據的形式傳遞至檢視。

清單 2 – Controllers/HomeController.cs (修改的 Index 方法)

using System.Linq;

using System.Web.Mvc;

using MovieApp.Models; 

namespace MovieApp.Controllers

{

    public class HomeController : Controller

    {

        private MoviesDBEntities _db = new MoviesDBEntities(); 

        public ActionResult Index()

        {

            return View(_db.MovieSet.ToList());

        }

    }

}

Index () 方法會傳回名為 Index 的檢視。 我們需要建立此檢視,以顯示電影資料庫記錄的清單。 遵循這些步驟:

您應該先建置專案 (選取功能表選項 [建置]、[建置方案 ]) ,再開啟 [ 新增檢視 ] 對話框,或 [ 檢視數據類別 ] 下拉式清單中不會顯示任何類別。

  1. 以滑鼠右鍵按兩下程式代碼編輯器中的 Index () 方法,然後選取選單選項 [ 新增檢視 ] (請參閱圖 9) 。
  2. 在 [新增檢視] 對話框中,確認已核取標示為 [ 建立強型別檢視 ] 的複選框。
  3. 從 [ 檢視內容] 下拉式清單中,選取 [ 列表] 值。
  4. 從 [ 檢視數據類別] 下拉式清單中,選取 [MovieApp.Models.Movie] 值。
  5. 按兩下 [新增] 按鈕以建立新的檢視 (請參閱圖 10) 。

完成這些步驟之後,會將名為 Index.aspx 的新檢視新增至 Views\Home 資料夾。 索引檢視的內容包含在清單 3 中。

程式代碼編輯器的螢幕快照,其中顯示已選取 [新增檢視] 的右鍵下拉式方塊。

圖 09:從控制器動作新增檢視, (按兩下以檢視大小完整的映像)

[新增檢視] 方塊的螢幕快照,其中顯示 [檢視名稱]、[索引] 和 [建立強型別檢視] 和 [選取主版頁面專案]。

圖 10:使用 [新增檢視] 對話框建立新的檢視 (按兩下即可檢視大小完整的影像)

清單 3 – Views\Home\Index.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MovieApp.Models.Movie>>" %> 

    <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">

       Index

    </asp:Content> 

    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

        <h2>Index</h2> 

        <table>

            <tr>

                <th></th>

                <th>

                    Id

                </th>

                <th>

                    Title

                </th>

                <th>

                    Director

                </th>

                <th>

                    DateReleased

                </th>

            </tr> 

        <% foreach (var item in Model) { %>

            <tr>

                <td>

                    <%= Html.ActionLink("Edit", "Edit", new { id=item.Id }) %> |

                    <%= Html.ActionLink("Details", "Details", new { id=item.Id })%>

                </td>

                <td>

                    <%= Html.Encode(item.Id) %>

                </td>

                <td>

                    <%= Html.Encode(item.Title) %>

                </td>

                <td>

                    <%= Html.Encode(item.Director) %>

                </td>

                <td>

                    <%= Html.Encode(String.Format("{0:g}", item.DateReleased)) %>

                </td>

            </tr>

        <% } %> 

        </table> 

        <p>

            <%= Html.ActionLink("Create New", "Create") %>

        </p> 

    </asp:Content>

[索引] 檢視會顯示 HTML 數據表內 Movies 資料庫數據表中的所有電影記錄。 檢視包含 foreach 循環,逐一查看 ViewData.Model 屬性所代表的每個電影。 如果您按下 F5 鍵來執行應用程式,您會看到圖 11 中的網頁。

[索引檢視] 的螢幕快照,其中顯示電影資訊,包括標識碼、標題、Director 和發行日期。

圖 11:索引檢視 (按兩下即可檢視完整大小的影像)

建立新的資料庫記錄

我們在上一節中建立的 [索引] 檢視包含建立新資料庫記錄的連結。 讓我們繼續實作邏輯,並建立建立新電影資料庫記錄所需的檢視。

Home 控制器包含兩個名為 Create () 的方法。 第一個 Create () 方法沒有參數。 Create () 方法的這個多載可用來顯示用來建立新電影資料庫記錄的 HTML 窗體。

第二個 Create () 方法具有 FormCollection 參數。 當建立新電影的 HTML 窗體張貼到伺服器時,會呼叫 Create () 方法的這個多載。 請注意,這個第二個 Create () 方法具有 AcceptVerbs 屬性,可防止呼叫方法,除非執行 HTTP POST 作業。

第二個 Create () 方法已在清單 4 中更新的 HomeController 類別中修改。 New version of the Create () method accepts a Movie parameter and contains the logic for inserting a new movie into the Movies database table.

注意

請注意 Bind 屬性。 因為我們不想從 HTML 窗體更新 Movie Id 屬性,所以我們必須明確排除這個屬性。

清單 4 – Controllers\HomeController.cs (修改的 Create 方法)

//

// GET: /Home/Create 

public ActionResult Create()

{

    return View();

}  

//

// POST: /Home/Create 

[AcceptVerbs(HttpVerbs.Post)]

public ActionResult Create([Bind(Exclude="Id")] Movie movieToCreate)

{

     if (!ModelState.IsValid)

        return View(); 

    _db.AddToMovieSet(movieToCreate);

    _db.SaveChanges(); 

    return RedirectToAction("Index");

}

Visual Studio 可讓您輕鬆地建立窗體來建立新的電影資料庫記錄, (請參閱圖 12) 。 遵循這些步驟:

  1. 以滑鼠右鍵按兩下程式代碼編輯器中的 Create () 方法,然後選取選單選項 [新增檢視]。
  2. 確認已核取標示為 [ 建立強型別檢視] 的 複選框。
  3. 從 [ 檢視內容 ] 下拉式清單中,選取 [ 建立] 值。
  4. 從 [ 檢視數據類別 ] 下拉式清單中,選取 MovieApp.Models.Movie值。
  5. 按兩下 [ 新增] 按鈕以建立新的檢視。

[新增檢視] 方塊的螢幕快照,其中顯示 [建立強型別檢視] 和 [選取選取主版頁面專案]。

圖 12:新增 [建立] 檢視 (按兩下以檢視完整大小的映像)

Visual Studio 會自動在清單 5 中產生檢視。 此檢視包含 HTML 表單,其中包含對應至 Movie 類別之每個屬性的欄位。

清單 5 – Views\Home\Create.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MovieApp.Models.Movie>" %> 

    <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">

       Create

    </asp:Content> 

    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

        <h2>Create</h2> 

        <%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %> 

        <% using (Html.BeginForm()) {%> 

            <fieldset>

                <legend>Fields</legend>

                <p>

                    <label for="Id">Id:</label>

                    <%= Html.TextBox("Id") %>

                    <%= Html.ValidationMessage("Id", "*") %>

                </p>

                <p>

                    <label for="Title">Title:</label>

                    <%= Html.TextBox("Title") %>

                    <%= Html.ValidationMessage("Title", "*") %>

                </p>

                <p>

                    <label for="Director">Director:</label>

                    <%= Html.TextBox("Director") %>

                    <%= Html.ValidationMessage("Director", "*") %>

                </p>

                <p>

                    <label for="DateReleased">DateReleased:</label>

                    <%= Html.TextBox("DateReleased") %>

                    <%= Html.ValidationMessage("DateReleased", "*") %>

                </p>

                <p>

                    <input type="submit" value="Create" />

                </p>

            </fieldset> 

        <% } %> 

        <div>

            <%=Html.ActionLink("Back to List", "Index") %>

        </div> 

    </asp:Content>

注意

[新增檢視] 對話框所產生的 HTML 窗體會產生標識符表單域。 由於 [標識符] 數據行是 [身分識別] 數據行,因此我們不需要此表單域,而且您可以安全地將其移除。

新增 [建立] 檢視之後,您可以將新的電影記錄新增至資料庫。 按 F5 鍵執行您的應用程式,然後按下 [新建] 連結以查看圖 13 中的表單。 如果您完成並提交表單,則會建立新的電影資料庫記錄。

請注意,您會自動取得窗體驗證。 如果您忽略輸入電影的發行日期,或輸入無效的發行日期,則會重新顯示表單,並醒目提示發行日期欄位。

顯示 [建立檢視] 頁面的瀏覽器螢幕快照,其中顯示標題、director 和日期發行的必要資料庫欄位。

圖 13: (按兩下以檢視完整大小的影像) 建立新的電影資料庫記錄

編輯現有的資料庫記錄

在上一節中,我們討論了如何列出和建立新的資料庫記錄。 在最後一節中,我們將討論如何編輯現有的資料庫記錄。

首先,我們需要產生編輯表單。 此步驟很簡單,因為Visual Studio會自動為我們產生編輯表單。 在 Visual Studio 程式代碼編輯器中開啟 HomeController.cs 類別,並遵循下列步驟:

  1. 以滑鼠右鍵按兩下程式代碼編輯器中的 Edit () 方法,然後選取選單選項 [新增檢視 ] (請參閱圖 14) 。
  2. 核取標示為 [建立強型別檢視] 的複選框。
  3. 從 [ 檢視內容 ] 下拉式清單中,選取 [ 編輯] 值。
  4. 從 [ 檢視數據類別 ] 下拉式清單中,選取 MovieApp.Models.Movie值。
  5. 按兩下 [ 新增] 按鈕以建立新的檢視。

完成這些步驟會將名為Edit.aspx的新檢視新增至 Views\Home 資料夾。 此檢視包含用於編輯電影記錄的 HTML 表單。

[檢視名稱] [編輯] 的 [新增檢視] 方塊螢幕快照,其中顯示 [建立強型別檢視] 和 [選取主版頁面專案]。

圖 14:新增編輯檢視 (按兩下以檢視完整大小的影像)

注意

[編輯] 檢視包含對應至電影標識元屬性的 HTML 表單域。 因為您不想讓人員編輯 Id 屬性的值,所以您應該移除此表單域。

最後,我們需要修改 Home 控制器,使其支援編輯資料庫記錄。 更新的 HomeController 類別包含在清單 6 中。

清單 6 – Controllers\HomeController.cs (Edit 方法)

//

// GET: /Home/Edit/5 

public ActionResult Edit(int id)

{

    var movieToEdit = (from m in _db.MovieSet

                       where m.Id == id

                       select m).First(); 

    return View(movieToEdit);

} 

//

// POST: /Home/Edit/5 

[AcceptVerbs(HttpVerbs.Post)]

public ActionResult Edit(Movie movieToEdit)

{ 

    var originalMovie = (from m in _db.MovieSet

                         where m.Id == movieToEdit.Id

                         select m).First(); 

    if (!ModelState.IsValid)

        return View(originalMovie);

        _db.ApplyPropertyChanges(originalMovie.EntityKey.EntitySetName, movieToEdit);

        _db.SaveChanges(); 

        return RedirectToAction("Index");

}

在清單 6 中,我已將額外的邏輯新增至 Edit () 方法的兩個多載。 第一個 Edit () 方法會傳回對應至傳遞至 方法之 Id 參數的電影資料庫記錄。 第二個多載會執行資料庫中電影記錄的更新。

請注意,您必須擷取原始電影,然後呼叫 ApplyPropertyChanges () ,以更新資料庫中的現有電影。

摘要

本教學課程的目的是讓您瞭解建置 ASP.NET MVC 應用程式的體驗。 希望您發現建置 ASP.NET MVC Web 應用程式與建置 Active Server Pages 或 ASP.NET 應用程式的體驗非常類似。

在本教學課程中,我們只檢查 ASP.NET MVC 架構的最基本功能。 在未來的教學課程中,我們會深入探討控制器、控制器動作、檢視、檢視數據和 HTML 協助程式等主題。