乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      [ASP.NET MVC2 系列] ASP.Net MVC教程之《在15分鐘內(nèi)用ASP.Net MVC創(chuàng)建一個電影數(shù)據(jù)庫應(yīng)用程序》

       昵稱30159207 2016-01-13

             Stephen Walther 從頭開始到結(jié)束建立了整個數(shù)據(jù)驅(qū)動ASP.NET MVC應(yīng)用程序。這個教程對于那些剛剛接觸ASP.NET MVC框架以及想要獲得一種建立ASP.NET MVC應(yīng)用程序的過程的新人是一個很好的介紹。


             這個教程的目的就是給你一種“它會是什么樣子”去創(chuàng)建ASP.NET MVC應(yīng)用程序的理念。在這一課中,從開始到結(jié)束,我將直接建立一個完整ASP.NET MVC應(yīng)用程序。我向你展示如何建立一個簡單的數(shù)據(jù)驅(qū)動應(yīng)用程序,演示如何列出,創(chuàng)建和編輯數(shù)據(jù)庫記錄。

         為簡化創(chuàng)建應(yīng)用程序的過程,我們會充分利用Visual Studio 2008的功能。我們會讓 Visual Studio為我們的控制層,模型層,視圖層生成初始代碼和內(nèi)容。

             如果你已經(jīng)使用Active Server Pages 或者 ASP.NET來工作,那么你將對ASP.NET MVC很熟悉。ASP.NET MVC 視圖與ASP應(yīng)用程序的頁面非常相似。并且與傳統(tǒng)的ASP.NET Web Forms 應(yīng)用程序一樣, ASP.NET MVC 為你提供了豐富的語言和.NET框架類。我希望這篇教程將讓你了解到創(chuàng)建ASP.NET MVC應(yīng)用程序的經(jīng)驗與創(chuàng)建ASP or ASP.NET Web Forms 應(yīng)用程序的相似點(diǎn)和不同點(diǎn).

        

            這部電影數(shù)據(jù)庫應(yīng)用程序的概述
       
           因為我們的目標(biāo)是讓事情簡單化,我們將建立一個非常簡單的電影數(shù)據(jù)庫應(yīng)用程序。我們的簡單的電影的數(shù)據(jù)庫應(yīng)用程序?qū)⑹刮覀兡軌蜃龅娜?
        
        1。列出一系列電影數(shù)據(jù)庫記錄
        2。創(chuàng)建一個新的電影數(shù)據(jù)庫記錄
        3。編輯一個現(xiàn)有的電影數(shù)據(jù)庫記錄
        再次,因為我們想讓事情變得簡單,我們會利用ASP.NET MVC框架少量的特點(diǎn)來建立我們的應(yīng)用程序。例如,我們不會利用測試驅(qū)動開發(fā)。
        
        為了創(chuàng)造我們的應(yīng)用程序,我們需要完成下列步驟:
        
        1。建立 ASP.NET MVC Web Application 項目
        2。創(chuàng)建數(shù)據(jù)庫
        3。創(chuàng)建數(shù)據(jù)庫模型層
        4。建立ASP.NET MVC控制層
        5。建立ASP.NET MVC視圖層

        

           篇前部分(準(zhǔn)備工作)
         你將需要Visual Studio 2008 或者 Visual Web Developer 2008 Express來建立一個 ASP.NET MVC 應(yīng)用程序。你還需要下載 ASP.NET MVC  MVC框架。
        
        如果你還沒有安裝Visual Studio 2008,你可以從這個網(wǎng)站下載一個90天試用版的Visual Studio 2008: 
        http://msdn.microsoft.com/en-us/vs2008/products/cc268305.aspx
        
        或者,你可以使用Visual Web Developer Express 2008創(chuàng)建ASP.NET MVC應(yīng)用程序。如果你決定要用Visual Web Developer Express ,你就必須已經(jīng)安裝 Service Pack 1 。你可以從這個網(wǎng)站下載Visual Web Developer 2008 Express with Service Pack 1 :
        
        http://www.microsoft.com/downloads/details.aspx?FamilyId=BDB6391C-05CA-4036-9154-6DF4F6DEBD14&displaylang=en
        
        在你安裝完Visual Studio 2008 或者 Visual Web Developer 2008以后,你需要安裝ASP.NET MVC 框架。你可以從以下網(wǎng)站下載ASP.NET MVC 框架:
        
        http://www./mvc/

        

          創(chuàng)建一個ASP.NET MVC Web Application 項目
        讓我們使用Visual Studio 2010創(chuàng)建ASP.NET MVC Web Application項目來開始。選擇菜單選擇文件,新建,項目,你將會看到這個新項目的對話框。選擇c#作為編程語言以及選擇ASP.NET MVC 2 Web 應(yīng)用程序項目模板。給你的項目命名為MovieApp和點(diǎn)擊“確定”按鈕。

           

       

       當(dāng)你創(chuàng)建一個新的MVC Web Application項目時 Visual Studio提示你去創(chuàng)造一個獨(dú)立的單元測試項目,如圖2所示。因為在這一課中我們不會創(chuàng)建測試,選擇“否”選項,并點(diǎn)擊“確定”按鈕。

       

        ASP.NET MVC應(yīng)用程序有一系列標(biāo)準(zhǔn)的文件夾:模型、視圖和控制的文件夾。你可以在“解決方案資源管理器”中看到這一系列標(biāo)準(zhǔn)的文件夾。我們需要添加文件到模型層,視圖層和控制層文件夾,用以創(chuàng)建我們的電影的數(shù)據(jù)庫應(yīng)用程序。
        
        當(dāng)你使用Visual Studio創(chuàng)建一個新的MVC應(yīng)用程序,你得到了一個示例應(yīng)用程序。因為我們要從頭開始,我們需要刪除該示例應(yīng)用程序的內(nèi)容。你需要刪除以下的文件和文件夾?!?br>   ·Controllers\HomeController.cs
           ·Views\Home


        創(chuàng)建數(shù)據(jù)庫
        我們需要創(chuàng)建一個數(shù)據(jù)庫來保存我們的電影數(shù)據(jù)庫記錄。幸運(yùn)的是,Visual Studio包含一個免費(fèi)的SQL Server Express。遵循這些步驟來創(chuàng)建數(shù)據(jù)庫。
        
        1。在“解決方案終于管理器”中,右鍵點(diǎn)擊該App_Data文件夾,選擇菜單的選項“添加”,“新建”。
        2。選擇數(shù)據(jù)分類和選擇SQL Server數(shù)據(jù)庫模板(見圖3)。
        3。命名新數(shù)據(jù)庫MoviesDB.mdf,然后點(diǎn)擊“增加”按鈕。
        在你創(chuàng)造你的數(shù)據(jù)庫后,你可以雙擊位于App_Data文件夾中的MoviesDB.mdf文件來連接這個數(shù)據(jù)庫。雙擊MoviesDB.mdf文件,打開服務(wù)器資源管理器的窗口。

       

       

          接下來,我們要創(chuàng)造一個新數(shù)據(jù)庫表。從服務(wù)器資源管理器窗口,右鍵點(diǎn)擊該表格的文件夾“表”,并選擇菜單選項“添加新表”。選擇這個菜單選項打開數(shù)據(jù)庫表設(shè)計器。創(chuàng)建以下數(shù)據(jù)庫的欄目。
          
       

       

           第一列,Id列,有兩個特殊的屬性。首先,你需要標(biāo)記Id列為主鍵列。選擇后,點(diǎn)擊Id列的“設(shè)置主鍵”選項(它是圖標(biāo)看起來像一個鑰匙)。其次,你需要標(biāo)記Id列作為一個標(biāo)記列。在這個“列屬性”窗口,向下轉(zhuǎn)動滾輪至“標(biāo)識規(guī)范”并且展開該節(jié)點(diǎn),改變“(是標(biāo)識)”為“是”。當(dāng)你完成,表應(yīng)該看起來像下圖所示。

       

           最后一步是保存這個新表。點(diǎn)擊“保存按鈕,并且給新表命名為Movies。 
        當(dāng)你完成創(chuàng)建表,加上一些電影記錄到這個表格中。在服務(wù)器資源管理器中,右鍵點(diǎn)擊Movies表,選擇菜單選項顯示表的數(shù)據(jù)。輸入你最喜歡的電影清單(見圖5)。

        

       

       

      創(chuàng)建模型層
        我們下一步要創(chuàng)建一系列的類來代表我們的數(shù)據(jù)庫。我們需要創(chuàng)建一個數(shù)據(jù)庫模型。我們將充分利用微軟實(shí)體框架來自動生成我們的數(shù)據(jù)庫模型?! ?br>  ASP.NET MVC 框架與微軟實(shí)體框架是無關(guān)聯(lián)的。你可以通過很多的對象-關(guān)系映射(OR/ M)工具來創(chuàng)建你的數(shù)據(jù)庫模型類,其中包括LINQ to SQL, Subsonic、NHibernate?!?br>  遵循這些步驟來展開實(shí)體數(shù)據(jù)模型向?qū)А?br>  
        1。在解決方案資源管理器窗口中,右鍵點(diǎn)擊該模型層的文件夾,選擇“添加”,“新建項”。
        2。選擇“數(shù)據(jù)”分類和選擇ADO.NET 實(shí)體數(shù)據(jù)模型模板。
        3。將你的數(shù)據(jù)模型命名為MoviesDBModel.edmx,然后點(diǎn)擊“添加”按鈕。

        你點(diǎn)擊“添加”按鈕后,這個實(shí)體數(shù)據(jù)模型向?qū)С霈F(xiàn)(見圖)。遵循這些步驟來完成向?qū)А?/p>

           1。在選擇模型內(nèi)容這一步,選擇“從數(shù)據(jù)庫生成”的選擇。
        2。在選擇你的數(shù)據(jù)連接這一步,使用這個MoviesDB.mdf數(shù)據(jù)連接以及MoviesDBEntities作為連接設(shè)置。單擊下一步按鈕。

      圖8
        3。在選擇你的數(shù)據(jù)庫對象一步,擴(kuò)大表節(jié)點(diǎn),選擇Movies表。輸入的命名空間MovieApp,單擊“完成”按鈕。

        

       

              在你完成實(shí)體數(shù)據(jù)模型向?qū)?,?shí)體數(shù)據(jù)模型設(shè)計器將開啟。設(shè)計器應(yīng)該顯示 Movies數(shù)據(jù)庫表(見圖10)。

        

       

            在我們繼續(xù)之前,我們需要做一點(diǎn)改變。這個實(shí)體數(shù)據(jù)向?qū)梢粋€Movies的模型類,代表 Movies數(shù)據(jù)庫表。因為我們將使用這個 Movies 類代表某一特定的電影,我們需要修改這個類的名稱為Movie而不是Movies(單數(shù)而不是復(fù)數(shù))。
        在設(shè)計器的表面,雙擊這個類的名稱以及更改這個類名為Movie。在標(biāo)識這個更改以后,點(diǎn)擊保存按鈕來生成Movie類。

       

      創(chuàng)建ASP.NET MVC 控制層
        下一步是要創(chuàng)建這個ASP.NET MVC 控制層。一個控制層負(fù)責(zé)控制用戶和 ASP.NET MVC 應(yīng)用程序的相互作用。
        
        遵循這些步驟: 
        1。在解決方案資源管理器中,右鍵點(diǎn)擊該 Controllers文件夾,并選擇菜單選項“添加控制器”。
        2。在對話框中輸入框中,鍵入HomeController和勾選“為Create,Update...”
      (見圖11)。

       

            3。點(diǎn)擊“添加”按鈕來添加新的控制器。
        在您完成這些步驟,該控制器在Listing 1就創(chuàng)建了。注意到它包含的Index, Details, Create, and Edit這些方法。在接下來的章節(jié),我們將添加所需的代碼來使這些方法來工作。


      Listing 1 – Controllers\HomeController.cs

      復(fù)制代碼
        1 using System;
        2 using System.Collections.Generic;
        3 using System.Linq;
        4 using System.Web;
        5 using System.Web.Mvc;
        6 
        7 namespace MovieApp.Controllers
        8 {
        9     public class HomeController : Controller
       10     {
       11         //
       12         // GET: /Home/
       13 
       14         public ActionResult Index()
       15         {
       16             return View();
       17         }
       18 
       19         //
       20         // GET: /Home/Details/5
       21 
       22         public ActionResult Details(int id)
       23         {
       24             return View();
       25         }
       26 
       27         //
       28         // GET: /Home/Create
       29 
       30         public ActionResult Create()
       31         {
       32             return View();
       33         } 
       34 
       35         //
       36         // POST: /Home/Create
       37 
       38         [HttpPost]
       39         public ActionResult Create(FormCollection collection)
       40         {
       41             try
       42             {
       43                 // TODO: Add insert logic here
       44 
       45                 return RedirectToAction('Index');
       46             }
       47             catch
       48             {
       49                 return View();
       50             }
       51         }
       52         
       53         //
       54         // GET: /Home/Edit/5
       55  
       56         public ActionResult Edit(int id)
       57         {
       58             return View();
       59         }
       60 
       61         //
       62         // POST: /Home/Edit/5
       63 
       64         [HttpPost]
       65         public ActionResult Edit(int id, FormCollection collection)
       66         {
       67             try
       68             {
       69                 // TODO: Add update logic here
       70  
       71                 return RedirectToAction('Index');
       72             }
       73             catch
       74             {
       75                 return View();
       76             }
       77         }
       78 
       79         //
       80         // GET: /Home/Delete/5
       81  
       82         public ActionResult Delete(int id)
       83         {
       84             return View();
       85         }
       86 
       87         //
       88         // POST: /Home/Delete/5
       89 
       90         [HttpPost]
       91         public ActionResult Delete(int id, FormCollection collection)
       92         {
       93             try
       94             {
       95                 // TODO: Add delete logic here
       96  
       97                 return RedirectToAction('Index');
       98             }
       99             catch
      100             {
      101                 return View();
      102             }
      103         }
      104     }
      105 }
      106 
      107 
      復(fù)制代碼

       

       

       

          列出數(shù)據(jù)庫記錄
        這個Home controller中的Index()方法是ASP.NET MVC 應(yīng)用程序的默認(rèn)的方法。當(dāng)你運(yùn)行ASP.NET MVC 應(yīng)用程序,該Index()方法是第一個被調(diào)用的控制器的方法
          

            我們將使用 Index()方法來顯示Movies數(shù)據(jù)庫表的一些數(shù)據(jù)。我們將使用Index()方法,利用數(shù)據(jù)庫模型類來檢索Movies數(shù)據(jù)庫記錄。
        
        在Listing 2,我已經(jīng)修改了HomeController類 ,以便它包含了1個新的_db所有字段。MoviesDBEntities類代表我們的數(shù)據(jù)庫模型,我們將使用這類與數(shù)據(jù)庫通信。
        
        在Listing 2,我還修改了Index()方法。這個Index()方法使用MoviesDBEntities類來檢索Movies 數(shù)據(jù)庫表的所有記錄。表達(dá)式_db.MovieSet.ToList()返回Movies數(shù)據(jù)庫表所有的記錄列表。
        
        這個movies的列表傳遞給view層。
        
        Listing 2 - Controllers/HomeController.cs (修改的Index()方法)。


      復(fù)制代碼
       1  public class HomeController : Controller
       2     {
       3         
       4         //
       5         // GET: /Home/
       6 
       7         private MovieApp.Models.MoviesDBEntities _db = new 
       8 
       9 Models.MoviesDBEntities();
      10         public ActionResult Index()
      11         {
      12             //return View();
      13             return View(_db.Movies.ToList());
      14         }
      15    ....
      16 }

      復(fù)制代碼

       

            Index()方法將返回一個命名為Index的視圖view。我們需要創(chuàng)建這個view來顯示movies數(shù)據(jù)庫記錄的列表。遵循這些步驟:
        
        在打開之前的對話或不加觀課程將出現(xiàn)在視圖數(shù)據(jù)等級的下拉列表。你應(yīng)該生成你的項目(選擇菜單選項“生成”,“生成解決方案”)
        1。在代碼編輯窗口中右鍵點(diǎn)擊該Index()方法和選擇菜單選項“添加視圖”(見圖13)。
       

          2。在對話框的角度,勾選“創(chuàng)建強(qiáng)類型視圖”復(fù)選框?!?br>  3。從“視圖數(shù)據(jù)類”下拉列表中,選擇值MovieApp.Models.Movie。
            4。從“視圖內(nèi)容”下拉列表中,選擇值List。
        5。點(diǎn)擊“添加”按鈕來創(chuàng)造新的view(見圖3)。
        在您完成這些步驟,一個新命名Index.aspx的View被添加到Views\Home 目錄。這個Index view的內(nèi)容都包含在Listing 3.。

      Listing 3 – Views\Home\Index.aspx

       

      復(fù)制代碼
       1 <%@ Page Title='' Language='C#' 
       2 
       3 MasterPageFile='~/Views/Shared/Site.Master' 
       4 
       5 Inherits='System.Web.Mvc.ViewPage>' 
       6 
       7 %>
       8 
       9 asp:Content ID='Content1' ContentPlaceHolderID='TitleContent' 
      10 
      11 runat='server'>
      12  Index
      13 asp:Content>
      14 
      15 asp:Content ID='Content2' ContentPlaceHolderID='MainContent' 
      16 
      17 runat='server'>
      18 
      19     h2>Indexh2>
      20 
      21     table>
      22         tr>
      23             th>th>
      24             th>
      25                 Id
      26             th>
      27             th>
      28                 Title
      29             th>
      30             th>
      31                 Director
      32             th>
      33             th>
      34                 DateReleased
      35             th>
      36         tr>
      37 
      38     <% foreach (var item in Model) { %>
      39     
      40         tr>
      41             td>
      42                 <%: Html.ActionLink('Edit''Edit'new { id=item.Id }) 
      43 
      44 %> |
      45                 <%: Html.ActionLink('Details''Details'new { 
      46 
      47 id=item.Id })%> |
      48                 <%: Html.ActionLink('Delete''Delete'new { 
      49 
      50 id=item.Id })%>
      51             td>
      52             td>
      53                 <%: item.Id %>
      54             td>
      55             td>
      56                 <%: item.Title %>
      57             td>
      58             td>
      59                 <%: item.Director %>
      60             td>
      61             td>
      62                 <%: String.Format('{0:g}', item.DateReleased) %>
      63             td>
      64         tr>
      65     
      66     <% } %>
      67 
      68     table>
      69 
      70     p>
      71         <%: Html.ActionLink('Create New''Create'%>
      72     p>
      73 
      74 asp:Content>
      75 
      76 
      復(fù)制代碼

       

       

             這個Index view 將movie數(shù)據(jù)庫表所有記錄顯示在HTML表格。這個視圖包含一個foreach循環(huán),它遍歷ViewData.Model屬性所表示的每一個movie。如果你通過按F5鍵運(yùn)行應(yīng)用程序,你將會看到網(wǎng)頁如下圖所示。

      圖14

       

        創(chuàng)建新的數(shù)據(jù)庫記錄

        我們在前一部分創(chuàng)建 的Index view 包括一個為創(chuàng)建新數(shù)據(jù)庫記錄的鏈接。
        
        Homecontroller包含兩種 Create()方法。第一個的 Create()方法沒有參數(shù)。這個重載的 Create()方法被用來顯示HTML表單。
        
        第二個Create()方法有一個FormCollection參數(shù)。當(dāng)這個創(chuàng)建一個新的movie的HTML表單回傳到服務(wù)器時,這個重載的Create()方法將被調(diào)用。注意這第二個Create()方法有一個AcceptVerbs屬性,它將阻止這個方法被調(diào)用,除非HTTP POST操作執(zhí)行了。
        
        這個第二個Create()方法已經(jīng)在Listing 4更新過的HomeController類中被修改了。新版本的Create()方法接受一個Movie 參數(shù)和包含插入一個新的movie到movies數(shù)據(jù)庫表的邏輯。
        
        注意綁定屬性。因為我們不想從HTML表單更新影片Id屬性,我們需要明確排除該屬性。


      Listing 4 – Controllers\HomeController.cs (modified Create method)

       

      復(fù)制代碼
       1    //
       2         // POST: /Home/Create
       3         [AcceptVerbs(HttpVerbs.Post)]
       4 
       5         public ActionResult Create([Bind(Exclude = 'Id')] Movie movieToCreate)
       6         {
       7 
       8             if (!ModelState.IsValid)
       9 
      10                 return View();
      11            
      12             _db.AddToMovies(movieToCreate);
      13             _db.SaveChanges();
      14             return RedirectToAction('Index');
      15 
      16         } 
      17 
      復(fù)制代碼

       

       

        Visual Studio ,使它容易創(chuàng)建表格來創(chuàng)建一個新的movie數(shù)據(jù)庫記錄。遵循這些步驟:
        
        

            1。在代碼編輯窗口,右鍵單擊Create()方法,選擇菜單選項“添加視圖”。
        2。確認(rèn)勾選“創(chuàng)建強(qiáng)類型視圖”。
        3。從“視圖數(shù)據(jù)類”下拉列表中,選擇值MovieApp.Models.Movie。
            4。從“視圖內(nèi)容”下拉列表中,選擇值 Create。
        5。點(diǎn)擊“添加”按鈕來創(chuàng)造新的view(見圖3)。
        

      圖 
        Visual Studio 自動生成視圖,如 Listing 5所示。這一view 包含HTML表單,它包含與Movie類的每個屬性相對應(yīng)的字段。

       

      Listing 5 – Views\Home\Create.aspx

       

      復(fù)制代碼
       1 <%@ Page Title='' Language='C#' MasterPageFile='~/Views/Shared/Site.Master' Inherits='System.Web.Mvc.ViewPage' %>
       2 
       3 asp:Content ID='Content1' ContentPlaceHolderID='TitleContent' runat='server'>
       4  Create
       5 asp:Content>
       6 
       7 asp:Content ID='Content2' ContentPlaceHolderID='MainContent' runat='server'>
       8 
       9     h2>Createh2>
      10 
      11     <% using (Html.BeginForm()) {%>
      12         <%: Html.ValidationSummary(true%>
      13 
      14         fieldset>
      15             legend>Fieldslegend>
      16             
      17             div class='editor-label'>
      18                 <%: Html.LabelFor(model => model.Id) %>
      19             div>
      20             div class='editor-field'>
      21                 <%: Html.TextBoxFor(model => model.Id) %>
      22                 <%: Html.ValidationMessageFor(model => model.Id) %>
      23             div>
      24             
      25             div class='editor-label'>
      26                 <%: Html.LabelFor(model => model.Title) %>
      27             div>
      28             div class='editor-field'>
      29                 <%: Html.TextBoxFor(model => model.Title) %>
      30                 <%: Html.ValidationMessageFor(model => model.Title) %>
      31             div>
      32             
      33             div class='editor-label'>
      34                 <%: Html.LabelFor(model => model.Director) %>
      35             div>
      36             div class='editor-field'>
      37                 <%: Html.TextBoxFor(model => model.Director) %>
      38                 <%: Html.ValidationMessageFor(model => model.Director) %>
      39             div>
      40             
      41             div class='editor-label'>
      42                 <%: Html.LabelFor(model => model.DateReleased) %>
      43             div>
      44             div class='editor-field'>
      45                 <%: Html.TextBoxFor(model => model.DateReleased) %>
      46                 <%: Html.ValidationMessageFor(model => model.DateReleased) %>
      47             div>
      48             
      49             p>
      50                 input type='submit' value='Create' />
      51             p>
      52         fieldset>
      53 
      54     <% } %>
      55 
      56     div>
      57         <%: Html.ActionLink('Back to List''Index'%>
      58     div>
      59 
      60 asp:Content>
      61 
      62 
      復(fù)制代碼

       

       

        在你創(chuàng)建 Create 視圖后,你可以添加新的Movie 記錄到數(shù)據(jù)庫。按下F5鍵運(yùn)行你的應(yīng)用程序和點(diǎn)擊Create New 的鏈接,你將看到如圖13所示的表格。如果你完成并提交表單、一個新movie數(shù)據(jù)庫記錄誕生了。
        

        

           注意,你自動獲得表單驗證。如果你忽略輸入movie的發(fā)行日期,或者你輸入一個無效的發(fā)布日期,那么這個表單被重新顯示,并且發(fā)布日期字段將高亮顯示。

       
      編輯現(xiàn)有的數(shù)據(jù)庫記錄

        在之前的部分,我們討論了如何列舉和創(chuàng)造新的數(shù)據(jù)庫記錄。在這最后一節(jié)中,我們將討論如何修改現(xiàn)有的數(shù)據(jù)庫記錄。
        
        首先,我們需要生成編輯表單。 因為Visual Studio將為我們自動生成編輯表單,所以這一步很容易。在Visual Studio代碼編輯器中,打開HomeController.cs類 ,遵循以下步驟:
        
          1。在代碼編輯窗口,右鍵單擊 Edit()方法,選擇菜單選項“添加視圖”。
        2。確認(rèn)勾選“創(chuàng)建強(qiáng)類型視圖”。
        3。從“視圖數(shù)據(jù)類”下拉列表中,選擇值MovieApp.Models.Movie。
            4。從“視圖內(nèi)容”下拉列表中,選擇值  Edit。
        5。點(diǎn)擊“添加”按鈕來創(chuàng)造新的view(見圖3)。
        
        

             完成這些步驟,將添加一個Edit.aspx的視圖到Views\Home文件夾中。這一視圖包含用來編輯一個movie記錄的HTML表單。Edit view包含一個相應(yīng)于movie Id屬性的HTML表單字段。因為你不想讓人們編輯這個Id屬性的值,你應(yīng)該移除這個表單字段。
        
          最后,我們還需要修改Home controller,使它支持編輯數(shù)據(jù)庫記錄。最新的HomeController類如Listing 6所示。

      Listing 6 – Controllers\HomeController.cs (Edit methods)

      復(fù)制代碼
       1 //
       2         // GET: /Home/Edit/5
       3  
       4         public ActionResult Edit(int id)
       5         {
       6             //return View();
       7             var movieToEdit = (from m in _db.Movies 
       8 
       9                                where m.Id == id
      10 
      11                                select m).First();
      12 
      13             return View(movieToEdit);
      14 
      15 
      16         }
      17 
      18 
      19         [AcceptVerbs(HttpVerbs.Post)]
      20 
      21         public ActionResult Edit(Movie movieToEdit)
      22         {
      23 
      24             var originalMovie = (from m in _db.Movies
      25 
      26                                  where m.Id == movieToEdit.Id
      27 
      28                                  select m).First();
      29 
      30             if (!ModelState.IsValid)
      31 
      32                 return View(originalMovie);
      33             
      34             _db.ApplyCurrentValuesMovie>(originalMovie.EntityKey.EntitySetName, movieToEdit);
      35             //_db.ApplyPropertyChanges(originalMovie.EntityKey.EntitySetName, movieToEdit);
      36 
      37             _db.SaveChanges();
      38 
      39             return RedirectToAction('Index');
      40 
      41         } 
      42 
      43 
      復(fù)制代碼

       

        

        在 Listing 6,我已經(jīng)為2個重載的Edit()方法增添了更多的邏輯。第一個Edit()方法將返回相對應(yīng)的Id傳遞參數(shù)的方法的movie數(shù)據(jù)庫記錄。第二個重載方法執(zhí)行數(shù)據(jù)庫中記錄的更新。
        

        

       

            注意,你必須檢索到原來的movie,然后調(diào)用ApplyCurrentValues、更新現(xiàn)有的在數(shù)據(jù)庫中的movie。
        
      總結(jié)
        這個教程的目的就是讓你初步了解如何創(chuàng)建一個ASP.NET MVC應(yīng)用程序。我希望你們發(fā)現(xiàn),創(chuàng)建一個 ASP.NET MVC web 應(yīng)用程序與創(chuàng)建ASP 或者 ASP.NET應(yīng)用程序是非常相似的。在這一課中,我們只是解釋ASP.NET MVC 框架的最基本的特征。在后續(xù)的教程中,我們將深入更多的主題,如controllers, controller actions, views, view data和HTML helpers。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多