ASP.NET Core - Razor 檢視匯入



在本章中,我們將討論 Razor 檢視匯入。除了 ViewStart 檔案之外,MVC 框架在渲染任何檢視時還會查詢一個 **ViewImports** 檔案。

與 ViewStart 檔案類似,我們可以將 ViewImports.cshtml 放入資料夾中,並且 ViewImports 檔案可以影響資料夾層次結構中的所有檢視。

View Imports
  • 此檢視是 MVC 此版本的新增功能,在以前版本的 MVC 中,我們可以使用 XML 配置檔案來配置 Razor 檢視引擎的某些方面。

  • 這些 XML 檔案現在消失了,我們使用程式碼代替。

  • ViewImports 檔案是我們可以編寫程式碼並放置常用指令以引入檢視所需的名稱空間的地方。

  • 如果我們在檢視中經常使用某些名稱空間,我們可以讓 **using 指令**在我們的 **ViewImports** 檔案中只出現一次,而不是在每個檢視中都使用 **using 指令**或鍵入類的完整名稱空間。

示例

讓我們來看一個簡單的例子,看看如何將我們的 **using 指令**移動到 **ViewImports** 中。在 Index 檢視中,我們有一個 **using 指令**來引入名稱空間 **FirstAppDemo.Controllers**,如下面的程式所示。

@using FirstAppDemo.Controllers 
@model HomePageViewModel  
@{  
   ViewBag.Title = "Home"; 
} 
<h1>Welcome!</h1> 

<table> 
   @foreach (var employee in Model.Employees) { 
      <tr> 
         <td> 
            @Html.ActionLink(employee.Id.ToString(), "Details", new { id = employee.Id })
         </td> 
         <td>@employee.Name</td> 
      </tr> 
   } 
</table>

**Using 指令**將允許從 Razor 檢視生成的程式碼正確編譯。如果沒有 **using 指令**,C# 編譯器將找不到此 Employee 型別。要檢視員工型別,讓我們從 **Index.cshtml** 檔案中刪除 using 指令。

@model HomePageViewModel 
@{  
    ViewBag.Title = "Home"; 
} 
<h1>Welcome!</h1> 

<table> 
   @foreach (var employee in Model.Employees) { 
      <tr>
         <td>
            @Html.ActionLink(employee.Id.ToString(), "Details", new { id = employee.Id })
         </td> 
         <td>@employee.Name</td> 
      </tr> 
   } 
</table> 

現在,執行應用程式。

Index CSHtml

您將看到其中一個錯誤,該錯誤指出找不到型別或名稱空間 **HomePageViewModel**。這可能是因為您的多個檢視需要相同的 **using 指令**。因此,與其將其放在每個檢視中,不如在 Views 資料夾中建立一個檢視匯入。這將透過右鍵單擊 Views 資料夾並選擇新增→新建項,為每個檢視新增 **using 語句**。

Home Page Model View

在中間窗格中,選擇 MVC 檢視匯入頁面。預設情況下,名稱為 _ViewImports.cshtml。就像 ViewStart 一樣,我們不能使用此檔案來渲染 HTML,因此讓我們單擊新增按鈕。

View imports Cshtml

現在,在 _ViewImports.cshtml 檔案中新增此 **using 指令**,如下所示。

@using FirstAppDemo.Controllers

現在,出現在此資料夾或任何子資料夾中的所有檢視都將能夠使用來自 FirstAppDemo.Controllers 的型別,而無需指定該確切的 using 語句。讓我們再次執行您的應用程式,您會看到檢視現在可以正常工作了。

FirstAppDemo Controllers
廣告

© . All rights reserved.