ASP.NET Core - Razor导入

ASP.NET Core - Razor导入 首页 / ASP.Net Core入门教程 / ASP.NET Core - Razor导入

在本章中,无涯教程将讨论Razor View Import,除了ViewStart文件之外,还有一个 ViewImports 文件,MVC框架在呈现任何视图时都将查找该文件。

就像ViewStart文件一样,可以将ViewImports.cshtml放到文件夹中,并且ViewImports文件可以影响文件夹层次结构中的所有视图。

View Imports
  • 此视图是此版本MVC的新增功能,在以前的MVC版本中,可以使用XML配置文件来配置Razor视图引擎的某些方面。

  • 这些XML文件现在不见了,改用代码。

  • ViewImports文件是可以编写代码和放置通用指令以引入视图所需名称空间的地方。

  • 如果在视图中通常使用命名空间,则可以在 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>

使用指令将允许从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> 

现在,运行该应用程序。

Index CSHtml

您将看到错误之一,指出找不到类型或名称空间 HomePageViewModel ,可能是因为您的某些视图需要使用同using指令。因此,不要将其放置在每个视图中,而应在Views文件夹中创建View导入。只需在Views文件夹上单击鼠标右键,然后选择Add→New Item,即可为每个视图添加 using语句。

无涯教程网

Home Page Model View

在中间窗格中,选择" MVC View Imports Pages"页面,默认情况下,名称为_ViewImports.cshtml,就像ViewStart一样,不能使用此文件来呈现HTML,因此击"Add"按钮。

View imports Cshtml

现在,在其中将 using指令添加到_ViewImports.cshtml文件中,如下所示。

@using FirstAppDemo.Controllers

现在,出现在此文件夹或任何子文件夹中的所有视图将能够使用FirstAppDemo.Controllers中的类型,而无需指定确切的using语句,让无涯教程再次运行您的应用程序,您可以看到该视图现在正在工作。

FirstAppDemo Controllers

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

硅谷产品实战36讲 -〔曲晓音〕

Vue开发实战 -〔唐金州〕

现代C++编程实战 -〔吴咏炜〕

接口测试入门课 -〔陈磊〕

视觉笔记入门课 -〔高伟〕

高楼的性能工程实战课 -〔高楼〕

业务开发算法50讲 -〔黄清昊〕

中间件核心技术与实战 -〔丁威〕

AI大模型系统实战 -〔Tyler〕

好记忆不如烂笔头。留下您的足迹吧 :)