原文: 學習ASP.NET Core Razor 程式設計系列一
一. 概述
.NET Core 1.0釋出的時候就想進行學習的,不過根據微軟的以往的釋出規律1.0版可以認為是大衆測試版,2.0才算穩定。現在2.1都已經釋出了預覽版,之前對其"不穩定"的顧慮也打消的差不多了,決定學習一下。
ASP.NET Core 具有如下優點:
- 生成 Web UI 和 Web API 的統一場景。
- 內建新式用戶端架構和開發工作流。
- 基于環境的雲就緒配置系統。
- 内置依賴項注入。
- 輕型的高性能子產品化 HTTP 請求管道。
- 能夠在 IIS、Nginx、Apache、Docker 上進行托管或在自己的程序中進行自托管。
- 定目标到 .NET Core 時,可以使用并行應用版本控制。
- 簡化新式 Web 開發的工具。
- 相容性,.NET Core 通過 .NET 标準與 .NET Framework、Xamarin 和 Mono 相容。
- 能夠在 Windows、macOS 和 Linux 進行生成和運作。
- 開放源代碼和以社群為中心。
如何跨平台?
我先上一張圖,然後我們再來看一下官方對.NET CORE 的介紹。
.NET Framework本身是個"跨Windows"的平台, 而在這個基礎上, 又支援C#和VB等語言進行 "跨語言",
.NET Core 是一個通用開發平台,由 Microsoft 和 GitHub 上的 .NET 社群共同維護。 它是跨平台的,支援 Windows、macOS 和 Linux,并且可用于裝置、雲和嵌入式/IoT 方案。
.NET Core 包括以下部分:
.NET 運作時:提供類型系統、程式集加載、垃圾回收器、本機互操作和其他基本服務。
一組 架構庫:提供基中繼資料類型、應用編寫類型和基本實用程式。
一組 SDK 工具和語言編譯器:提供基本的開發人員體驗,可用于 .NET Core SDK。
“dotnet”應用主機,用于啟動 .NET Core 應用。 它選擇運作時并托管運作時,提供程式集加載政策來啟動應用。 同一主機還可用于以大緻相同的方式.NET Core 主要以兩種方式發行,以包方式在 NuGet.org 上發行,以及以獨立方式發行。以包方式在 NuGet.org 上發行, 使應用更加靈活、子產品化的同時提高性能.
.NET API 和相容性
可将 .NET Core 看作是 .NET Framework 在 .NET Framework 基類庫 (BCL) 的跨平台版本。 它實施 .NET 标準規範。 .NET Core 提供了一個可用于 .NET Framework 或 Mono/Xamarin 的 API 子集。 在某些情況下,類型未完全實作(某些成員不可用或已移動)。
與 .NET Standard 的關系
.NET 标準是一種 API 規範,用于描述開發者可以在每個 .NET 實作代碼中使用的一組一緻 .NET API。 .NET 實作需要實作此規範才能被視為符合 .NET Standard ,并且才能支援面向 .NET Standard 的庫。
與 .NET Framework 比較
.NET 由 Microsoft 于 2000 年首次釋出,而後發展至今。 15 年多以來,.NET Framework 一直是 Microsoft 出品的主要 .NET 實作。
.NET Core 和 .NET Framework 的主要差異在于:
應用模型 -- .NET Core 不支援所有 .NET Framework 應用模型,某種程式上是因為其中許多模型都是基于 Windows 技術,如 WPF(基于 DirectX 生成)。 但 .NET Core 和 .NET Framework 兩者都支援控制台和 ASP.NET Core 應用模型。
API -- .NET Core 包含很多與 .NET Framework 相同,但數量較少的 API,并且具有不同的組成要素(程式集名稱不同;關鍵用例中的類型形狀不同)。 目前,這些差異通常都需要更改,以将源移植到 .NET Core。 .NET Core 實作 .NET 标準 API,随着時間的推移,将包含更多 .NET Framework BCL API。
子系統 -- .NET Core 實作 .NET Framework 中子系統的子級,目的是實作更簡單的實作和程式設計模型。 例如,不支援代碼通路安全性 (CAS),但支援反射。
平台 -- .NET Framework 支援 Windows 和 Windows Server,而 NET Core 還支援 macOS 和 Linux。
開放源 -- .NET Core 屬于開放源,而 .NET Framework 的隻讀子集屬于開放源。
雖然 .NET Core 是唯一的且與 .NET Framework 和其他 .NET 實作大不相同,但使用源或二進制共享技術分享代碼仍很簡單。
二、開始學習第一個ASP.NET Core應用程式
本教程學習如何建立基于ASP.NET Core Razor頁面的Web應用程式。
第一,請先安裝以下軟體
- .NET Core SDK 2.0版本或更高版本
- Visual Studio 2017版本15.3 或更高版本,并且包含 ASP.NET Web開發功能子產品
第二,建立一個Razor Web應用程式
- 在Visual Studio 2017中選擇菜單-->檔案-->建立-->項目。如下圖。
2. 在彈出的“建立項目”的對話框中做如下選擇。
- 在左邊的清單中,選擇 .NET Core ,如下圖中1處
- 在中間的清單中,選擇 ASP.NET Core Web應用程式,如下圖中2處。
- 在名稱文本框中輸入“RazorMvcBooks” ,如下圖中3處。
- 在下圖中4處,點選“确定”按鈕,建立Web應用程式
3.在彈出的“建立ASP.NET Core Web 應用程式-RazorMvcBooks”的對話框中做如下選擇:
- 在下圖1處,從下拉框中選擇“Net Core”與“Asp.NET Core 2.0”
- 在下圖2處,選擇Web應用程式
- 滑鼠點選确定按鈕,如下圖3處。
注
使用ASP.NET Core的.NET架構,你必須首先選擇在第一個下拉框中選擇架構,然後在第二下下拉框中選擇ASP.NET Core的版本。如上圖1處。
4. Visual Studio 2017使用預設模闆建立了一個ASP.NET Core MVC Razor頁面項目。我們剛才通過輸入一個項目名稱并選擇了幾個選項,建立了一個Web應用程式。這是一個簡單的入門項目,項目結構如下圖。
5.按F5在調撥模式下運作這個應用程式或者按Ctrl+F5在不調試模式下運作這個應用程式。
- Visual Studio 2017 将啟動IIS Express并運作RazorMvcBooks應用程式。注意,位址欄顯示“localhost:端口”而不是域名(如www.cnblogs.com)。這是因為localhost是本地計算機的标準主機名。當Visual Studio 2017建立Web項目時,Web伺服器使用随機端口。在上面的圖檔中,端口号是53416。浏覽器中的URL顯示“http://localhost: 53416/”。你運作應用程式時,可能會看到一個不同的端口号。
6.如果使用Ctrl + F5(非調試模式)啟用應用程式,在這個模式下允許您進行代碼更改,在儲存檔案之後,重新整理浏覽器,不需要重新啟動應用程式就可以檢視代碼更改之後的結果。許多開發人員喜歡使用非調試模式來快速啟動應用程式并檢視更改。見下圖。圖中1 處是啟動時的在頁面中要顯示的内容。我在程式代碼中進行了修改。如圖2處。在浏覽器中按F5,進行重新整理之後,頁面顯示就如圖3處所示。
7. 使用預設模闆建立的RazorMvcBooks項目,有Home,About和Contact三個頁面。根據浏覽器視窗的大小,您可能需要單擊菜單圖示來顯示相關菜單連結。如下圖。
8.測試連結。在RazorMVCBooks的頁面可以點選About連結。如下圖。所示。
第三、項目檔案與檔案夾
下表列出了項目中的檔案和檔案夾。如下圖。在本教程中,将startup.cs檔案了解是最重要。
檔案或檔案夾 | 作用 |
wwwroot | 存放靜态檔案的檔案夾,些檔案包括網站使用的CSS樣式表、圖像和 JavaScript 檔案 |
Pages | 這個檔案夾中主要放是Razor頁面檔案。以 .cshtml 結尾的檔案是 Razor 檔案,以 .cs 結尾的檔案是C#類檔案 |
appsettings.json | 基于 json 格式的檔案,用于應用程式範圍的配置設定 |
Program.cs | ASP.NET Core 應用程式的入口點 |
Startup.cs | 配置服務和請求管道, 用于處理所有對應用程式請求。 |
第四、Page檔案夾中的檔案說明
_layout.cshtml檔案中包含通用的HTML元素(腳本和樣式表)和應用程式的總體布局。例如,當你點選RazorMvcBooks,Home,About的連結時,你會看到同樣的頁眉與頁腳布局。
_viewstart.cshtml檔案當作_layout.cshtml檔案的布局屬性來使用。
_viewimports.cshtml包含導入到每個Razor頁面的Razor指令。
_validationscriptspartial.cshtml檔案提供對jQuery驗證腳本的引用。當我們添加建立和編輯網頁時,_validationscriptspartial.cshtml檔案将被使用。
About.cshtml、Contact.cshtml和Index.cshtml是用來啟動應用程式的基本頁面。
Error.cshtml用于顯示錯誤資訊。