ASP.NET Core Razor 视图导入

在本章中,我们将讨论 Razor 视图导入。除了 ViewStart 文件,还有一个 ViewImports 文件,MVC 框架将在渲染任何视图时查找该文件。

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

  • 这个视图对于这个版本的 MVC 来说是新的,在以前的 MVC 版本中,我们可以使用 XML 配置文件来配置 Razor 视图引擎的某些方面。
  • 那些 XML 文件现在没有了,我们改用代码。
  • ViewImports 文件是一个我们可以编写代码和放置公共指令以拉入视图所需的命名空间的地方。
  • 如果视图中有我们常用的名称空间,我们可以让 using 指令在 ViewImports 文件中出现一次,而不是在每个视图中都有 using 指令或键入类的完整名称空间。

实例

让我们举一个简单的例子,看看如何将 using 指令移动到 ViewImports 中。在 Index 视图中,我们有一个 using 指令来引入名称空间 MyFirstCoreWebApp.Controllers,如以下程序所示。

  1. @using MyFirstCoreWebApp.Controllers
  2. @model HomePageViewModel
  3. @{
  4. ViewBag.Title = "Home";
  5. }
  6. <h1>Welcome!</h1>
  7. <table>
  8. @foreach (var employee in Model.Employee) {
  9. <tr>
  10. <td>
  11. @Html.ActionLink(employee.ID.ToString(), "Details", new { id = employee.ID })
  12. </td>
  13. <td>@employee.EmployeeName</td>
  14. </tr>
  15. }
  16. </table>
using 指令使得从 Razor 视图生成的代码正确编译。否则,C# 编译器将无法找到此 Employee 类型。

让我们修改一下以上的代码,去掉 using 部分。

编译时将产生错误,指出找不到类型或命名空间 HomePageViewModel。这可能是因为您的几个视图需要相同的 using 指令。因此,让我们在 Views 文件夹中创建一个 视图导入,而不是将其放置在每个视图中。这将向每个视图添加 using 语句,只需右键单击 Views 文件夹并选择 添加→ 新建项。

然后点击 添加 按钮。

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

  1. @using MyFirstCoreWebApp.Controllers

现在,出现在此文件夹或任何子文件夹中的所有视图都可以使用 MyFirstCoreWebApp.Controllers 中的类型,而无需指定确切的 using 语句。让我们再次运行您的应用程序,所有页面都恢复正常。

分类导航