
- MVC框架教程
- MVC框架 - 首頁
- MVC框架 - 簡介
- MVC框架 - 架構
- MVC框架 - ASP.NET表單
- MVC框架 - 第一個應用程式
- MVC框架 - 資料夾
- MVC框架 - 模型
- MVC框架 - 控制器
- MVC框架 - 檢視
- MVC框架 - 佈局
- MVC框架 - 路由引擎
- MVC框架 - 動作過濾器
- 高階示例
- MVC框架 - Ajax支援
- MVC框架 - 捆綁
- 異常處理
- MVC框架有用資源
- 問答
- MVC框架 - 快速指南
- MVC框架 - 資源
- MVC框架 - 討論
MVC框架 - 檢視
正如最初的介紹章節中所看到的,檢視是與應用程式使用者介面相關的元件。這些檢視通常從模型資料繫結,並具有html、aspx、cshtml、vbhtml等副檔名。在我們的第一個MVC應用程式中,我們使用了檢視和控制器來向終端使用者顯示資料。為了將這些靜態和動態內容呈現到瀏覽器,MVC框架使用了檢視引擎。檢視引擎基本上是標記語法實現,負責將最終HTML呈現到瀏覽器。
MVC框架附帶兩個內建檢視引擎:
Razor引擎 - Razor是一種標記語法,它允許將伺服器端C#或VB程式碼嵌入網頁中。此伺服器端程式碼可用於在載入網頁時建立動態內容。與ASPX引擎相比,Razor是一個高階引擎,並在MVC的後續版本中推出。
ASPX引擎 - ASPX或Web窗體引擎是自一開始就包含在MVC框架中的預設檢視引擎。使用此引擎編寫程式碼類似於在ASP.NET Web窗體中編寫程式碼。
以下是比較Razor和ASPX引擎的小程式碼片段。
Razor
@Html.ActionLink("Create New", "UserAdd")
ASPX
<% Html.ActionLink("SignUp", "SignUp") %>
在這兩者中,Razor是一個高階檢視引擎,因為它具有緊湊的語法、測試驅動開發方法和更好的安全功能。我們將在所有示例中使用Razor引擎,因為它是最常用的檢視引擎。
這些檢視引擎可以編碼和實現為以下兩種型別:
- 強型別
- 動態型別
這些方法分別類似於早期繫結和後期繫結,其中模型將被強型別或動態繫結到檢視。
強型別檢視
為了理解這個概念,讓我們建立一個示例MVC應用程式(按照前面章節中的步驟),並新增一個名為ViewDemoController的控制器類檔案。

現在,將以下程式碼複製到控制器檔案中:
using System.Collections.Generic; using System.Web.Mvc; namespace ViewsInMVC.Controllers { public class ViewDemoController : Controller { public class Blog { public string Name; public string URL; } private readonly List topBlogs = new List { new Blog { Name = "Joe Delage", URL = "http://tutorialspoint/joe/"}, new Blog {Name = "Mark Dsouza", URL = "http://tutorialspoint/mark"}, new Blog {Name = "Michael Shawn", URL = "http://tutorialspoint/michael"} }; public ActionResult StonglyTypedIndex() { return View(topBlogs); } public ActionResult IndexNotStonglyTyped() { return View(topBlogs); } } }
在上面的程式碼中,我們定義了兩個操作方法:StronglyTypedIndex和IndexNotStonglyTyped。我們現在將為這些操作方法新增檢視。
右鍵單擊StonglyTypedIndex操作方法,然後單擊“新增檢視”。在下一個視窗中,選中“建立強型別檢視”複選框。這還將啟用模型類和腳手架模板選項。從腳手架模板選項中選擇列表。單擊“新增”。

將建立一個類似於以下螢幕截圖的檢視檔案。正如您所注意到的,它在頂部包含了ViewDemoController的Blog模型類。您還將能夠在此方法中使用IntelliSense。

動態型別檢視
要建立動態型別檢視,請右鍵單擊IndexNotStonglyTyped操作,然後單擊“新增檢視”。

這次,不要選中“建立強型別檢視”複選框。

生成的檢視將具有以下程式碼:
@model dynamic @{ ViewBag.Title = "IndexNotStonglyTyped"; } <h2>Index Not Stongly Typed</h2> <p> <ul> @foreach (var blog in Model) { <li> <a href = "@blog.URL">@blog.Name</a> </li> } </ul> </p>
正如您在上面的程式碼中看到的,這次它不像前面那樣將Blog模型新增到檢視中。此外,您這次將無法使用IntelliSense,因為這次繫結將在執行時完成。
強型別檢視被認為是一種更好的方法,因為我們已經知道正在傳遞什麼資料作為模型,這與動態型別檢視不同,在動態型別檢視中,資料在執行時繫結,如果連結模型中的某些內容發生更改,可能會導致執行時錯誤。