ASP.NET Core – Razor View Import用途介紹

風靈使發表於2019-02-27

在這篇文章中,我們將介紹Razor View Import。除ViewStart檔案外,還有一個ViewImports檔案,MVC框架在渲染任何檢視時都會查詢該檔案。

ViewStart檔案一樣,我們可以將ViewImports.cshtml拖放到資料夾中,ViewImports檔案可以影響資料夾層次結構中的所有檢視

檢視
此檢視是此版本的MVC的新檢視,在以前的MVC版本中,我們可以使用XML配置檔案來配置Razor檢視引擎的某些方面。
那些XML檔案現在不見了,我們使用程式碼代替。

ViewImports檔案是我們可以編寫程式碼並放置通用指令以引入我們的檢視所需的名稱空間的地方。
如果有,我們在我們的看法通常使用的名稱空間,我們可以使用指令在我們出現一次ViewImports檔案中,而不是使用指令在每個檢視或打字一類的完整的名稱空間。

讓我們舉一個簡單的例子來看看如何將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>

使用指令將允許從Razor檢視生成的程式碼正確編譯。如果不使用指令,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>

現在,執行該應用程式。

索引CSHtml

您將看到一個錯誤,指出無法找到型別或名稱空間HomePageViewModel。可能是因為您的幾個檢視需要相同的using指令。因此,讓我們在Views資料夾中建立一個View匯入,而不是將其放在每個檢視中。這將在每個檢視中新增using語句,只需右鍵單擊Views資料夾並選擇Add→New Item

主頁模型檢視

在中間窗格中,選擇MVC View Imports頁面。預設情況下,名稱為_ViewImports.cshtml。就像ViewStart一樣,我們不能使用這個檔案來呈現HTML,所以讓我們點選Add按鈕。

Cshtml

現在將this中的using指令新增到_ViewImports.cshtml檔案中,如下所示。

@using FirstAppDemo.Controllers

現在,此資料夾或任何子資料夾中顯示的所有檢視都可以使用FirstAppDemo.Controllers中的型別,而無需指定精確的using語句。讓我們再次執行您的應用程式,您可以看到該檢視現在正在執行。

FirstAppDemo控制器

相關文章