1、爲何要使用視圖html
使用視圖之後有兩個優勢:前端
一、保證頁面內容輸出和控制器代碼的分離。和Code Behind不一樣,CodeBehind實現的是物理分離,視圖能夠實現邏輯上的分離。後端
二、更方便、更直觀的輸出頁面內容的方式。頁面上面的邏輯能夠很方便的藉助Razor語法和HTML混合的方式完成,不像之前的WebFrom須要後端把全部的HTML整合好在進行輸出,這樣後臺和前端想結合起來很困難。瀏覽器
2、視圖的尋址網站
一、視圖尋址方法1spa
當使用View方法返回視圖的時候,是怎麼知道要執行哪一個視圖頁面呢?一般的作法就是經過視圖的方法傳遞視圖的完整路徑,或者指定視圖的名稱,指定視圖路徑很好理解!以下面的代碼所示:code
public ActionResult Index() { return View(); }
默認狀況下,啓動的時候會打開Index視圖,將代碼修改以下:htm
public ActionResult Index() { // 指定視圖的路徑 return View("~/Views/Home/About.cshtml"); }
運行結果:對象
從運行結果中能夠看出,若是指定了視圖的路徑,那麼運行的時候打開的就會是指定路徑的視圖。blog
那麼指定視圖名稱(默認代碼就是使用的指定視圖名稱的方法)的時候是如何知道視圖放在什麼地方呢?難道要遍歷整個網站的路徑嗎?固然不會是這樣的,以下圖所示,它有一個尋址範圍的。
指定視圖名稱尋找視圖的步驟:
一、首先查找相應的Controller名稱對應的視圖文件夾,若是找不到,在查找Shared文件夾。
二、先查找cshtml文件。
三、這是一種約定的規則。
二、視圖尋址方法2
3、編寫視圖
前面已經接觸了視圖的編寫,從原理上講ASP.NET針對請求的處理最終體如今對目標Action方法的執行,並就處理的結果對請求予以響應,而ActionResult爲咱們提供了一種響應請求的快捷方式。ASP.NET MVC定義了一系列原生的ActionResult類型,如:EmptyResult、ContentResult等,它們或者幫助咱們將指定的內容按照相應的媒體類型響應給客戶端,或者回復一個指定狀態碼的響應,又或者是實現客戶端的重定向。
ViewResult是重要也是最爲經常使用的ActionResult,咱們能夠利用它將指定的View呈如今客戶端的瀏覽器上。針對ViewResult的View呈現最終是利用View引擎來實現的。View引擎中的View實現了IView接口,對應着某個View文件,而核心組件ViewEngine實現針對View的獲取、激活、呈現以及最終的釋放。
View文件最終編譯生成的WebViewPage<TModel>是System.Web.Mvc.WebViewPage的子類,然後者繼承自WebPageBase。咱們在定義View的時侯使用的三個幫助對象(HtmlHelper、UrlHelper和AjaxHelper)所對應的屬性就定義在這裏,他們經過InitHelpers方法進行初始化。
咱們在定義View的時侯能夠經過只讀屬性Model、ViewData、ViewBag和TempData獲得在Controller中設置的狀態數據,也能夠經過調用SetViewData設置ViewData,ViewContext表示View當前上下文。以下圖所示:
4、HTML輔助方法
下圖中列出了一些常見的HTML輔助方法: