在这篇文章中,我们将讨论Razor View Start。MVC中的Razor视图引擎有一个约定,它将查找名为_ViewStart.cshtml的任何文件并执行此文件中的代码。在单个视图中执行代码之前。
- ViewStart文件中的代码无法呈现到页面的HTML输出中,但它可用于从各个视图中的代码块中删除重复的代码。
- 在我们的示例中,如果我们希望每个视图都使用我们在上一章中创建的Layout视图,我们可以将代码放在ViewStart中设置Layout视图,而不是在每个视图中都有代码。
例
让我们举一个简单的例子来看看它是如何工作的。在我们的应用程序中,我们不希望每个视图都指定其Layout视图是_Layout.cshtml。因此,右键单击Views文件夹,然后选择Add→New Item。
ASP.NET MVC中有一个用于ViewStart页面的特定模板,因此请在中间窗格中选择MVC View Start Page。这里最重要的部分是这个文件名为_ViewStart.cshtml。现在单击“添加”按钮。
ViewStart文件的主要用途是设置“布局”视图。
现在让我们转到Index.cshtml文件并剪切Layout行,然后将其添加到ViewStart文件中,如以下程序所示。
@{ Layout = "~/Views/Shared/_Layout.cshtml"; }
- 当MVC框架用于呈现视图时,它将查看文件夹层次结构中是否存在ViewStart文件。
- 我们已将_ViewStart直接放入Views文件夹中。这将影响Views文件夹内所有文件夹中的所有视图,以及Home文件夹内的视图,以及Shared文件夹,以及我们将来可能添加的任何其他控制器文件夹。
- 如果我们将ViewStart放在Home文件夹中,那么这些代码只会在我们在Home文件夹中呈现其中一个视图时执行。
- 我们甚至可以有多个ViewStart文件,因此我们可以在Views文件夹中找到ViewStart.cshtml,为所有视图设置Layout视图。
- 但是如果我们想要改变Home文件夹中所有视图的默认值,我们可以在Home文件夹中使用另一个ViewStart将布局设置为其他内容。
让我们保存所有文件并运行应用程序。
您将看到您的主页仍然按照以前的方式呈现,我们仍然可以使布局视图生效。