[小菜一碟] ASP.NET Core MVC 中 _ViewStart.cshtml 及 _ViewImports.cshtml 的作用

_ViewStart.cshtml 在 ASP.NET MVC 就存在了,而 ASP.NET Core MVC 則多了一個 _ViewImports.cshtml,這兩個都會對 View 有全域性的影響,重新來了解一下 _ViewStart.cshtml 及新多的 _ViewImports.cshtml 的作用。

_ViewStart.cshtml

_ViewStart.cshtml 顧名思義,就是在 View 開始執行之前執行,而且是每一個 View,預設 ASP.NET Core MVC 專案開起來之後,就有產生一個 /Views/_ViewStart.cshtml,其內容為:

@{
    Layout = "_Layout";
}

意思就是每一個 View 的 Layout 預設是 _Layout,所以我們有任何要在 View 執行之前執行的程式碼,可以放在 _ViewStart.chstml 裡面,而且不同的 Controller、不同的 Area,可以為其增加 _ViewStart.cshtml,假定我新增了一個 /Views/Home/_ViewStart.cshtml,內容如下:

@{
    ViewData["MemberName"] = "Johnny";
}

當我瀏覽 /Home/Index 的時候,_ViewStart.cshtml 的執行順序是先執行 /Views/_ViewStart.cshtml,接著執行 /Views/Home/_ViewStart.cshtml,而我的 ViewData 就多了 MemberName 的內容。

_ViewImports.cshtml

_ViewImports.cshtml 是放一些要引用的命名空間,預設的 ASP.NET Core MVC 專案就有一個 /Views/_ViewImports.cshtml,其內容為:

@using [Project Namespace]
@using [Project Namespace].Models
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

之後的每一個 View 就不用再引用這些命名空間,與 _ViewStart.cshtml 一樣,可以為不同的 Controller、不同的 Area 增加 _ViewImports.cshtml,假定我新增了一個 /Views/Home/_ViewImports.chtml,其內容如下:

@using System.IO
@using System.Text

在 HomeController 的 View 就可以直接使用 System.IO 及 System.Text 命名空間底下的 API,而不用 using 這兩個命名空間。

以上是 _ViewStart.cshtml 及 _ViewImports.cshtml 的作用,分享給各位朋友參考。

相關資源

C# 指南
ASP.NET 教學
ASP.NET MVC 指引
Azure SQL Database 教學
SQL Server 教學
Xamarin.Forms 教學