1. 程式人生 > >[.Net碼農]MVC——入門+最簡單的小例項

[.Net碼農]MVC——入門+最簡單的小例項

MVC全名是Model View Controller,是模型(model)-檢視(view)-控制器(controler)的縮寫,一種軟體設計典範,用於組織程式碼用一種業務邏輯和資料顯示分離的方法。

1.最上面直接面向用戶的"檢視層"(View)。它是提供給使用者的操作介面。

2.最底層核心的"資料層"(Model),也就是程式需要操作的資料或資訊。
3.中間層是"控制層"(Controller),它負責根據使用者從"檢視層"輸入的指令,選取"資料層"中的資料,然後對其進行相應的操作,產生最終結果。

    MVC就像有點類似於食堂,可以分成三部分。一部分是倉庫,負責提供蔬菜等原材料,這是"資料層"(Model);另一部分是賣飯視窗,這是它的"檢視層"(View),負責銷售飯菜;兩者之間是通過廚師這個"控制層"(Controller)將原材料從“倉庫”中取出,處理加工後放到“視窗”上賣。

    下面就通過一個小例子進一步說明MVC的中三層的各自的作用以及互動。

1.新建mvc專案。


2.在Models資料夾下新建一個user類,用於模擬資料。

  1. publicclass user  
  2. {  
  3.     publicstring userName {get;set; }  
  4.     publicstring passWord{get;set;}  
  5.     publicoverridestring ToString ()  
  6.     {  
  7.         return"userName="+this.userName+",passWord="+this.passWord;  
  8.     }  
  9. }  

3.在Controllers資料夾下新建一個控制器,用於從獲取user.cs中資料,並將處理後資料傳給Index.cshtml檢視。


  1. namespace MyMvcTest.Controllers  
  2. {  
  3.     publicclass MyUserController : Controller  
  4.     {  
  5.         //
  6.         // GET: /MyUser/
  7.         public List<Models.user> InitData()  
  8.         {  
  9.             List<Models.user> list = new
     List<Models.user>()  
  10.             {  
  11.                 new Models.user(){userName="1",passWord="1"},  
  12.                 new Models.user(){userName="2",passWord="2"},  
  13.                 new Models.user(){userName="3",passWord="3"}  
  14.             };  
  15.             return list;  
  16.         }  
  17.         public ActionResult Index()  
  18.         {  
  19.             //建立一個StringBuilder
  20.             System.Text.StringBuilder sbHtml = new System.Text.StringBuilder(4000);  
  21.             //初始化資料
  22.             List<Models.user> list = InitData();  
  23.             //從list中獲取資料並存入到sbHtml中
  24.             list.ForEach(d =>  
  25.             {  
  26.                 sbHtml.AppendLine("<div>"+d.ToString()+"</div>");  
  27.             });  
  28.             //利用ViewBag傳輸資料給同名的index.cshtml檢視
  29.             ViewBag.HtmlStr = sbHtml.ToString();  //ViewBag是一個dynamic型別集合,可以動態新增任意型別的任意名稱的屬性和值
  30.             return View();  
  31.         }  
  32.     }  
  33. }  

4.新增檢視,用於將資料顯示到Index.cshtml檢視中。


  1. @{  
  2.     Layout = null;  
  3. }  
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7.     <metaname="viewport"content="width=device-width"/>
  8.     <title>Index</title>
  9. </head>
  10. <body>
  11.     <div>
  12.         @Html.Raw(ViewBag.HtmlStr)  
  13.     </div>
  14. </body>
  15. </html>
5.配置路由,設定新新增的檢視為預設啟動檢視,在App_Start檔案下找到RouteConfig.cs檔案進行修改。


總結:View提供給操作介面,Model提供程式需要操作的資料或資訊,Controller負責對資料加工並傳入到到view中。

原始碼下載