小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

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

 昵稱30159207 2016-01-13

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


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

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

       如果你已經(jīng)使用Active Server Pages 或者 ASP.NET來工作,那么你將對(duì)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)驗(yàn)與創(chuàng)建ASP or ASP.NET Web Forms 應(yīng)用程序的相似點(diǎn)和不同點(diǎn).

  

      這部電影數(shù)據(jù)庫應(yīng)用程序的概述
 
     因?yàn)槲覀兊哪繕?biāo)是讓事情簡單化,我們將建立一個(gè)非常簡單的電影數(shù)據(jù)庫應(yīng)用程序。我們的簡單的電影的數(shù)據(jù)庫應(yīng)用程序?qū)⑹刮覀兡軌蜃龅娜?
  
  1。列出一系列電影數(shù)據(jù)庫記錄
  2。創(chuàng)建一個(gè)新的電影數(shù)據(jù)庫記錄
  3。編輯一個(gè)現(xiàn)有的電影數(shù)據(jù)庫記錄
  再次,因?yàn)槲覀兿胱屖虑樽兊煤唵?我們會(huì)利用ASP.NET MVC框架少量的特點(diǎn)來建立我們的應(yīng)用程序。例如,我們不會(huì)利用測(cè)試驅(qū)動(dòng)開發(fā)。
  
  為了創(chuàng)造我們的應(yīng)用程序,我們需要完成下列步驟:
  
  1。建立 ASP.NET MVC Web Application 項(xiàng)目
  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來建立一個(gè) ASP.NET MVC 應(yīng)用程序。你還需要下載 ASP.NET MVC  MVC框架。
  
  如果你還沒有安裝Visual Studio 2008,你可以從這個(gè)網(wǎng)站下載一個(gè)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 。你可以從這個(gè)網(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)建一個(gè)ASP.NET MVC Web Application 項(xiàng)目
  讓我們使用Visual Studio 2010創(chuàng)建ASP.NET MVC Web Application項(xiàng)目來開始。選擇菜單選擇文件,新建,項(xiàng)目,你將會(huì)看到這個(gè)新項(xiàng)目的對(duì)話框。選擇c#作為編程語言以及選擇ASP.NET MVC 2 Web 應(yīng)用程序項(xiàng)目模板。給你的項(xiàng)目命名為MovieApp和點(diǎn)擊“確定”按鈕。

     

 

 當(dāng)你創(chuàng)建一個(gè)新的MVC Web Application項(xiàng)目時(shí) Visual Studio提示你去創(chuàng)造一個(gè)獨(dú)立的單元測(cè)試項(xiàng)目,如圖2所示。因?yàn)樵谶@一課中我們不會(huì)創(chuàng)建測(cè)試,選擇“否”選項(xià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)建一個(gè)新的MVC應(yīng)用程序,你得到了一個(gè)示例應(yīng)用程序。因?yàn)槲覀円獜念^開始,我們需要?jiǎng)h除該示例應(yīng)用程序的內(nèi)容。你需要?jiǎng)h除以下的文件和文件夾。 
   ·Controllers\HomeController.cs
     ·Views\Home


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

 

 

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

 

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

 

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

  

 

 

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

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

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

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

  

 

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

  

 

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

 

創(chuàng)建ASP.NET MVC 控制層
  下一步是要?jiǎng)?chuàng)建這個(gè)ASP.NET MVC 控制層。一個(gè)控制層負(fù)責(zé)控制用戶和 ASP.NET MVC 應(yīng)用程序的相互作用。
  
  遵循這些步驟: 
  1。在解決方案資源管理器中,右鍵點(diǎn)擊該 Controllers文件夾,并選擇菜單選項(xiàng)“添加控制器”。
  2。在對(duì)話框中輸入框中,鍵入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ù)庫記錄
  這個(gè)Home controller中的Index()方法是ASP.NET MVC 應(yīng)用程序的默認(rèn)的方法。當(dāng)你運(yùn)行ASP.NET MVC 應(yīng)用程序,該Index()方法是第一個(gè)被調(diào)用的控制器的方法
    

      我們將使用 Index()方法來顯示Movies數(shù)據(jù)庫表的一些數(shù)據(jù)。我們將使用Index()方法,利用數(shù)據(jù)庫模型類來檢索Movies數(shù)據(jù)庫記錄。
  
  在Listing 2,我已經(jīng)修改了HomeController類 ,以便它包含了1個(gè)新的_db所有字段。MoviesDBEntities類代表我們的數(shù)據(jù)庫模型,我們將使用這類與數(shù)據(jù)庫通信。
  
  在Listing 2,我還修改了Index()方法。這個(gè)Index()方法使用MoviesDBEntities類來檢索Movies 數(shù)據(jù)庫表的所有記錄。表達(dá)式_db.MovieSet.ToList()返回Movies數(shù)據(jù)庫表所有的記錄列表。
  
  這個(gè)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()方法將返回一個(gè)命名為Index的視圖view。我們需要?jiǎng)?chuàng)建這個(gè)view來顯示movies數(shù)據(jù)庫記錄的列表。遵循這些步驟:
  
  在打開之前的對(duì)話或不加觀課程將出現(xiàn)在視圖數(shù)據(jù)等級(jí)的下拉列表。你應(yīng)該生成你的項(xiàng)目(選擇菜單選項(xiàng)“生成”,“生成解決方案”)
  1。在代碼編輯窗口中右鍵點(diǎn)擊該Index()方法和選擇菜單選項(xiàng)“添加視圖”(見圖13)。
 

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

 

 

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

圖14

 

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

  我們?cè)谇耙徊糠謩?chuàng)建 的Index view 包括一個(gè)為創(chuàng)建新數(shù)據(jù)庫記錄的鏈接。
  
  Homecontroller包含兩種 Create()方法。第一個(gè)的 Create()方法沒有參數(shù)。這個(gè)重載的 Create()方法被用來顯示HTML表單。
  
  第二個(gè)Create()方法有一個(gè)FormCollection參數(shù)。當(dāng)這個(gè)創(chuàng)建一個(gè)新的movie的HTML表單回傳到服務(wù)器時(shí),這個(gè)重載的Create()方法將被調(diào)用。注意這第二個(gè)Create()方法有一個(gè)AcceptVerbs屬性,它將阻止這個(gè)方法被調(diào)用,除非HTTP POST操作執(zhí)行了。
  
  這個(gè)第二個(gè)Create()方法已經(jīng)在Listing 4更新過的HomeController類中被修改了。新版本的Create()方法接受一個(gè)Movie 參數(shù)和包含插入一個(gè)新的movie到movies數(shù)據(jù)庫表的邏輯。
  
  注意綁定屬性。因?yàn)槲覀儾幌霃腍TML表單更新影片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)建一個(gè)新的movie數(shù)據(jù)庫記錄。遵循這些步驟:
  
  

      1。在代碼編輯窗口,右鍵單擊Create()方法,選擇菜單選項(xiàng)“添加視圖”。
  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 自動(dòng)生成視圖,如 Listing 5所示。這一view 包含HTML表單,它包含與Movie類的每個(gè)屬性相對(duì)應(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所示的表格。如果你完成并提交表單、一個(gè)新movie數(shù)據(jù)庫記錄誕生了。
  

  

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

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

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

       完成這些步驟,將添加一個(gè)Edit.aspx的視圖到Views\Home文件夾中。這一視圖包含用來編輯一個(gè)movie記錄的HTML表單。Edit view包含一個(gè)相應(yīng)于movie Id屬性的HTML表單字段。因?yàn)槟悴幌胱屓藗兙庉嬤@個(gè)Id屬性的值,你應(yīng)該移除這個(gè)表單字段。
  
    最后,我們還需要修改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個(gè)重載的Edit()方法增添了更多的邏輯。第一個(gè)Edit()方法將返回相對(duì)應(yīng)的Id傳遞參數(shù)的方法的movie數(shù)據(jù)庫記錄。第二個(gè)重載方法執(zhí)行數(shù)據(jù)庫中記錄的更新。
  

  

 

      注意,你必須檢索到原來的movie,然后調(diào)用ApplyCurrentValues、更新現(xiàn)有的在數(shù)據(jù)庫中的movie。
  
總結(jié)
  這個(gè)教程的目的就是讓你初步了解如何創(chuàng)建一個(gè)ASP.NET MVC應(yīng)用程序。我希望你們發(fā)現(xiàn),創(chuàng)建一個(gè) 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。

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多