- ASP.NET Core 教程
- ASP.NET Core - 首頁
- ASP.NET Core - 概述
- ASP.NET Core - 環境設定
- ASP.NET Core - 新建專案
- ASP.NET Core - 專案佈局
- ASP.NET Core - project.json
- ASP.NET Core - 配置
- ASP.NET Core - 中介軟體
- ASP.NET Core - 異常處理
- ASP.NET Core - 靜態檔案
- ASP.NET Core - 設定 MVC
- ASP.NET Core - MVC 設計模式
- ASP.NET Core - 路由
- ASP.NET Core - 屬性路由
- ASP.NET Core - 操作結果
- ASP.NET Core - 檢視
- 設定 Entity Framework
- ASP.NET Core - DbContext
- ASP.NET Core - Razor 佈局檢視
- ASP.NET Core - Razor 檢視啟動
- ASP.NET Core - Razor 檢視匯入
- ASP.NET Core - Razor 標籤助手
- ASP.NET Core - Razor 編輯表單
- ASP.NET Core - 身份驗證概述
- ASP.NET Core - Authorize 屬性
- 身份驗證配置
- ASP.NET Core - 身份遷移
- ASP.NET Core - 使用者註冊
- ASP.NET Core - 建立使用者
- ASP.NET Core - 登入和登出
- ASP.NET Core 有用資源
- ASP.NET Core - 快速指南
- ASP.NET Core - 有用資源
- ASP.NET Core - 討論
ASP.NET Core - 檢視
在 ASP.NET Core MVC 應用程式中,不存在像頁面這樣的概念,並且當您在 URL 中指定路徑時,它也不包含任何直接對應於頁面的內容。在 ASP.NET Core MVC 應用程式中最接近頁面的是所謂的檢視。
正如您所知,在 ASP.NET MVC 應用程式中,所有傳入的瀏覽器請求都由控制器處理,這些請求被對映到控制器操作。
控制器操作可能會返回一個檢視,或者它也可能執行其他型別的操作,例如重定向到另一個控制器操作。
使用 MVC 框架,建立 HTML 的最流行方法是使用 ASP.NET MVC 的 Razor 檢視引擎。
要使用此檢視引擎,控制器操作會生成一個 **ViewResult** 物件,而 ViewResult 可以攜帶我們想要使用的 Razor 檢視的名稱。
檢視將是檔案系統上的一個檔案,ViewResult 還可以將模型物件傳遞給檢視,檢視在建立 HTML 時可以使用此模型物件。
當 MVC 框架看到您的控制器操作生成 ViewResult 時,框架將在檔案系統上找到檢視,執行檢視(生成 HTML),並且正是這個 HTML 由框架傳送回客戶端。
示例
現在讓我們來看一個簡單的例子,透過更改 HomeController Index 方法的實現來了解這在我們的應用程式中是如何工作的,如下面的程式所示。
using FirstAppDemo.Models;
using Microsoft.AspNet.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace FirstAppdemo.Controllers {
public class HomeController : Controller {
public ViewResult Index() {
var employee = new Employee { ID = 1, Name = "Mark Upston"};
return View();
}
}
}
在 **HomeController** 中,我們不要生成 **ObjectResult**,而只是返回 **View()** 方法返回的內容。View 方法不返回 ObjectResult。它建立了一個新的 ViewResult,因此我們還將 Index 方法的返回型別更改為 ViewResult。View 方法在這裡接受一些引數。我們將在此處不帶任何其他引數地呼叫此方法。讓我們儲存您的檔案並重新整理您的瀏覽器。
這是因為 MVC 框架必須出去找到該檢視,但目前還沒有檢視。
在 C# ASP.NET 專案中,預設情況下,檢視是具有 *.cshtml 副檔名的檔案,並且檢視遵循特定的約定。預設情況下,所有檢視都位於專案中的 Views 資料夾中。
如果未提供任何其他資訊,ASP.NET MVC 將派生檢視位置和檢視檔名。
如果我們需要從 HomeController 的 Index 操作呈現檢視,MVC 框架首先查詢該檢視的位置是在 Views 資料夾中。
它將進入 Home 資料夾,然後查詢名為 Index.cshtml 的檔案 - 檔名以 Index 開頭,因為我們位於 Index 操作中。
MVC 框架還將查詢 Shared 資料夾,並將您放在 Shared 資料夾中的檢視用於應用程式中的任何位置。
為了使我們的檢視結果正常工作,讓我們在正確的位置建立此 Index.cshtml 檔案。因此,在我們的專案中,我們首先需要新增一個包含所有檢視的資料夾,並將其命名為 Views。在 Views 資料夾中,我們將為與 HomeController 關聯的檢視新增另一個資料夾,並將其命名為 Home。右鍵單擊 Home 資料夾,然後選擇 **新增** → **新建項**。
在左側窗格中,選擇 MVC 檢視頁面,在名稱欄位中輸入 **index.cshtml**,然後單擊新增按鈕。
讓我們在 index.cshtml 檔案中新增以下程式碼。
<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<title>Home</title>
</head>
<body>
<h1>Welcome!</h1>
<div>
This message is from the View...
</div>
</body>
</html>
您現在可以看到一個 ***.cshtml 檔案**。它可以包含 HTML 標記,並且此檔案中包含的任何標記都將直接傳送給客戶端。儲存此檔案並重新整理瀏覽器。
現在,Home 控制器透過 ViewResult 將此檢視呈現給客戶端,並且 index.cshtml 檔案中包含的所有標記都是傳送給客戶端的。
讓我們回到 HomeController 和 View 方法。此 View 方法有一些不同的過載,並將員工模型作為引數傳遞。
using FirstAppDemo.Models;
using Microsoft.AspNet.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace FirstAppdemo.Controllers {
public class HomeController : Controller {
public ViewResult Index() {
var employee = new Employee { ID = 1, Name = "Mark Upston"};
return View(employee);
}
}
}
View 方法只接受一個模型物件,它將使用預設檢視,即 Index。這裡我們只想傳入該模型資訊並在 Index.cshtml 中使用該模型,如下面的程式所示。
<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<title>Home</title>
</head>
<body>
<h1>Welcome!</h1>
<div>
@Model.Name
</div>
</body>
</html>
當我們在 **Razor 檢視** 中使用 @ 符號時,Razor 檢視引擎將把您鍵入的內容視為 C# 表示式。Razor 檢視包含一些我們可以訪問 C# 表示式中的內建成員。其中最重要的成員之一是 Model。當您說 @Model 時,您將獲得從控制器傳遞到檢視的模型物件。因此,這裡的 @Model.Name 將在檢視中顯示員工姓名。
現在讓我們儲存所有檔案。之後,重新整理瀏覽器以檢視以下輸出。
您現在可以看到員工姓名,如上面的螢幕截圖所示。