前面對route、controller、view 已經有了基本的瞭解,今天我們就來一個簡單的執行個體-- Movie
開始之前,簡單說一下model(模型),相信大家做分層開發的時候一定用過它,MVC的model和他一樣,
每一個model 對應資料庫一張表,這樣我們就是用model的屬性訪問表中每一行記錄的某一列值。
微軟的Mvc架構中你可以自己寫model,也可以使用ADO.NET Entity Data Model、Linq to SQL 類等,今天這個執行個體我們用的是
實體資料模型。下面我們就記錄下這個簡單一實例的步驟:
一、在資料庫中建一張 Movies 表:
欄位:ID int , --自增長 主鍵
Movie_Name nvarchar(50) , --電影名稱
Release_Date datetime, --發行日期
二、建立asp.net mvc2 項目
這裡我們可以建立asp.net mvc 2 web application(當然也可以建立一個空的mvc項目),項目名:Movie
項目建好了以後,我們可以把不用的controller、model、view刪除掉
三、建模型層 Model
這裡我們使用實體資料模型來完成我們Model。
在Models檔案夾上右鍵 --> 添加項,選擇ADO.NET Entity Data Model,名稱:Mvoie(我註:Movie)
下面選擇 從資料庫產生
建立一個資料庫連接,串連到我們的測試庫
選擇我們需要的表 (Movie),如果資料庫中有視圖或預存程序的話也可以選擇過來,
模型命名空間:Models
點擊完成。。
此時我們就可以看到我們建立的實體資料模型設計介面,不是說會自動把名稱改成單數的嗎?怎麼沒改過來?呵呵,可能是中文版的vs吧,原因不詳。。。我們手工改下吧。。把Movies改為Movie(我註:我這裡倒是單數的,也是中文版的VS)
呵呵,好了,到此為止我們的Model 已經建立好了,是不是覺得實體資料模型很方便呢?。。。
四、建控制層--Controller
上面Model建好以後,我們可以先build一下我們的項目(如果自動產生了測試專案並且把預設的controller刪掉以後,在test項目中會報錯,這時我們把test項目中的controller測試檔案刪掉就好了)
下面我們建立一個Controller名叫:MoviesController
在 Controllers 檔案夾上右鍵 -->添加-->controller;填入名稱MoviesController並勾選上"Add action methods for Create,Update, and Details scenarios",大家看一下就明白大概意思,就是說“添加建立、更新、和明細這幾個方法”
點 Add 按鈕。。
添加後,我們就可以看到一個帶有添加、編輯、明細功能架構的controller,注意此時只是個架構,並不帶有實際功能的,需要我們自己來完成邏輯代碼的。
using System;<br /> using System.Collections.Generic;<br /> using System.Linq;<br /> using System.Web;<br /> using System.Web.Mvc;</p><p> namespace Movie.Controllers<br /> {<br /> public class MoviesController : Controller<br /> {<br /> //<br /> // GET: /Movies/</p><p> public ActionResult Index()<br /> {<br /> return View();<br /> }</p><p> //<br /> // GET: /Movies/Details/5</p><p> public ActionResult Details(int id)<br /> {<br /> return View();<br /> }</p><p> //<br /> // GET: /Movies/Create</p><p> public ActionResult Create()<br /> {<br /> return View();<br /> } </p><p> //<br /> // POST: /Movies/Create</p><p> [HttpPost]<br /> public ActionResult Create(FormCollection collection)<br /> {<br /> try<br /> {<br /> // TODO: Add insert logic here</p><p> return RedirectToAction("Index");<br /> }<br /> catch<br /> {<br /> return View();<br /> }<br /> }</p><p> //<br /> // GET: /Movies/Edit/5</p><p> public ActionResult Edit(int id)<br /> {<br /> return View();<br /> }</p><p> //<br /> // POST: /Movies/Edit/5</p><p> [HttpPost]<br /> public ActionResult Edit(int id, FormCollection collection)<br /> {<br /> try<br /> {<br /> // TODO: Add update logic here</p><p> return RedirectToAction("Index");<br /> }<br /> catch<br /> {<br /> return View();<br /> }<br /> }<br /> }<br /> }<br />
這裡我們用 Index方法來實現顯示Movie的列表功能(需要顯示資料,當然我們要先在資料庫裡先Insert幾條測試資料啦。。),此時我們修改下Index裡面的方法,
//<br /> // GET: /Movies/</p><p> public ActionResult Index()<br /> {<br /> TestDBEntities _dbEntities = new TestDBEntities();//建立資料庫實體</p><p> return View(_dbEntities.MovieSet.ToList());//返回帶Movie集合的View<br /> //也可以手工指定 ViewData.Model = _dbEntities.MovieSet.ToList();<br /> }<br />
五、建視圖層 -- View
現在我們開始建一個與Controller 裡面的Index 方法對於的View,方法是:
我們在 Index上右鍵-- Add View;
在下面的面板中我們選擇“建立一個強型別的視圖”,何為“強型別”呢,顧名思義它有個“很強的”的類型,呵呵,到底什麼類型呢?好了,我們就在下面選擇我們建立的Model -- Movie.Models.Movie(我註:這裡的類型,我是這麼理解的,不知道有沒有錯,第一個Movie是工程的名字,第二個Models是工程的檔案夾名Models,最後一個Movie則是實體類檔案名稱Movie.edmx,記住不是該檔案裡面的類名),這就是它的類型了。。
在 View context 視圖內容裡我們選擇List (因為我們需要建立一個顯示Movie列表的視圖哦)
Add 完了以後,我們就基本上完成了顯示 Movie列表的頁面了,是不是很簡單呢?呵呵,好啦,我們可以F5啦!
我們發現起來的首頁還是預設的首頁 Home/Index ,也有人把原來的Home 目錄刪掉了,提示找不到分頁錯誤,呵呵,沒關係,原因是因為我們Global.asax 裡面設定了預設的控制器,還記得啦?我們可以設定下,將new { controller = "Home", action = "Index", id = "" } 這段改成new { controller = "Movies", action = "Index", id = "" } 即可。。。。F5。。 是不是起來就能看到我們的Movie列表啦?哈哈。。。。
好,現在基本上顯示列表會搞了,我們再來看看它產生的頁面內容是什麼。。。咦?也沒什麼的嘛,我們選擇List 類型後,他就給我們 foreach 一個表格嘛,這還蠻方便的嘛,呵呵,當然我們也可以不選List類型,選擇一個空類型,然後我們自己寫嘛。。。下面就是View裡面的操作啦,一些 html代碼,大家想怎麼改就怎麼改就好了。。。
好了,今天就寫到這裡,下一篇就具體完成下編輯、新增、刪除、顯示明細的功能(相信大家喜歡思考的話都應該會了,呵呵),希望這文章對新手入門有一點點協助。。。。
轉自:http://www.cnblogs.com/bboy/archive/2010/01/25/1655389.html