前面我們説過了 控制器(controller) 和方法(action)
本次要説的就是 View以及和控制器(controller)、方法(action)之間的關係;
大家都知道 MVC中的 V 就是View 的意思,就是 呈現給用户的界面,以往的asp.net項目中叫 webform,以前做asp.net的時候就是在工具箱裏面拖控件出來,
然後簡單的排版一下就ok了,大多數用的服務器控件來完成,然而我們會發現 在生成的頁面中包含大量的 hidden字段,
微軟就是通過這邊的hidden字段的內容來維護 每個服務端控件狀態的,如果頁面很多服務端控件的話整個頁面就顯得很臃腫。
而mvc 推出後,就不再推薦使用服務端控件(當然是可以使用的),而用傳統的手寫 html來完成(似乎又回到過去了?呵呵)。
首先我們説一下 View 和 Controller、action之間的關係:
Controller -->Action -->View
前幾篇文章説過 如何從 我們輸入的 URL,找到route 再找到 controller再找到對應的action,並且説過了 action 的幾種返回類型。
今天的主角就是 View 類型:
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
這裏是 默認Home 控制器下的 Index 方法
1、ViewData["Message"]="Welcome to ASP.NET MVC!" ,這裏 控制器和 view 之間傳遞參數、內容 可以通過 ViewData 來實現,ViewData存放的內容是 key/value 形式 ,
類似 Session等
2、return View(); 這裏就是返回一個 view,這裏他是沒有帶參數的,默認就是 該 Action名稱(Index);此時會去 Views/Home 文件夾下 找Index.aspx 這個頁面,如果找到,皆大歡喜,返回 Index.aspx 內容,如果找不到,不好意思 報錯,提示你 找不到文件,呵呵
這裏的 View 有8個重載的構造函數,常用的除了 無構造函數外,還有 可以帶一個 viewname 的字符串:
return View("About"); 此時 就可以根據 About 來尋找對應的 aspx 頁面文件了;
View(string viewname,string mastername);指定頁面文件名 和 模板名
還有些構造函數的方式,大家可以在 vs裏面查看一下
view 創建方式:
1、Views/對應的controller 文件夾上 右鍵 添加-- View
2、在Controller 裏 方法裏面 右鍵 有個 Add View 菜單
這裏 View 的文件名儘量 和 Action 名稱一樣,這樣就直接可以通過 action 名稱來找到view了。