MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controler)的縮寫,一種軟件設計典范,用於組織代碼用一種業務邏輯和數據顯示分離的方法。
1.最上面直接面向用戶的"視圖層"(View)。它是提供給用戶的操作界面。
2.最底層核心的"數據層"(Model),也就是程序需要操作的數據或信息。
3.中間層是"控制層"(Controller),它負責根據用戶從"視圖層"輸入的指令,選取"數據層"中的數據,然后對其進行相應的操作,產生最終結果。
MVC就像有點類似於食堂,可以分成三部分。一部分是倉庫,負責提供蔬菜等原材料,這是"數據層"(Model);另一部分是賣飯窗口,這是它的"視圖層"(View),負責銷售飯菜;兩者之間是通過廚師這個"控制層"(Controller)將原材料從“倉庫”中取出,處理加工后放到“窗口”上賣。
下面就通過一個小例子進一步說明MVC的中三層的各自的作用以及交互。
1.新建mvc項目。
2.在Models文件夾下新建一個user類,用於模擬數據。
public class user { public string userName {get;set; } public string passWord{get;set;} public override string ToString () { return "userName="+this.userName+",passWord="+this.passWord; } }
3.在Controllers文件夾下新建一個控制器,用於從獲取user.cs中數據,並將處理后數據傳給Index.cshtml視圖。
namespace MyMvcTest.Controllers
{
public class MyUserController : Controller { // // GET: /MyUser/ public List<Models.user> InitData() { List<Models.user> list = new List<Models.user>() { new Models.user(){userName="1",passWord="1"}, new Models.user(){userName="2",passWord="2"}, new Models.user(){userName="3",passWord="3"} }; return list; } public ActionResult Index() { //創建一個StringBuilder System.Text.StringBuilder sbHtml = new System.Text.StringBuilder(4000); //初始化數據 List<Models.user> list = InitData(); //從list中獲取數據並存入到sbHtml中 list.ForEach(d => { sbHtml.AppendLine("<div>"+d.ToString()+"</div>"); }); //利用ViewBag傳輸數據給同名的index.cshtml視圖 ViewBag.HtmlStr = sbHtml.ToString(); //ViewBag是一個dynamic類型集合,可以動態添加任意類型的任意名稱的屬性和值 return View(); } } }
4.添加視圖,用於將數據顯示到Index.cshtml視圖中。
@{ Layout = null;}
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Index</title> </head> <body> <div>
<!--綁定html代碼,過濾html 標記-->
@Html.Raw(ViewBag.HtmlStr) </div> </body> </html>
5.配置路由,設置新添加的視圖為默認啟動視圖,在App_Start文件下找到RouteConfig.cs文件進行修改。
總結: View提供給操作界面, Model提供程序需要操作的數據或信息, Controller負責對數據加工並傳入到到view中。