猿教程 Logo

Asp.Net Core-导入视图

在本章中,我们将讨论Razor视图导入。 除了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>

using指令将允许从Razor视图生成的代码正确编译。 如果没有using指令,C#编译器将无法找到此Employee类型。 要查看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>

现在,运行应用程序。


您将看到一个错误,说明无法找到类型或命名空间HomePageViewModel。 这可能是因为你的几个视图需要相同的using指令。 所以,我们不是将它放在每个视图中,而是在Views文件夹中创建一个View 导入页面。 这将添加using语句到每个视图,只需右键单击Views文件夹,然后选择Add → New Item.


在中间窗格中,选择MVC视图导入页面。 默认情况下,名称为_ViewImports.cshtml。 就像ViewStart一样,我们不能使用这个文件来渲染HTML,让我们点击Add按钮。


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

@using FirstAppDemo.Controllers

现在,出现在此文件夹或任何子文件夹中的所有视图都将能够使用FirstAppDemo.Controllers中的类型,而无需指定using语句。 让我们再次运行你的应用程序,你可以看到视图可以正常运行了。



版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/ASPNET-CORE/core-import-view.html