如何在Razor页面中使用MVC部分视图和布局

问题描述

这可能吗? 我在MVC中拥有大部分的Web应用程序。 但是我将要建立一个技术角,我只想转到简单的Razor页面,而不是设置复杂的终结点以在StartUp中到达那里。

看起来像页面会更好地组织简单的页面,例如:

articles / AspNetCore3-列出相关文章

articles / AspNetCore3 / WhatsNew-在此处设置文章

articles / AspNetCore3 / Blazor-在此处讨论这项新技术

articles / Azure / Overview-这些类型的URL简单 内容,但Razor Page准备在需要时添加功能

解决方法

您可以使用@RenderPage("_MenubarPage.cshtml");

您还可以使用@RenderPage("_MenuPage.cshtml",MyModel),它可以通过将其作为第二个参数添加到视图中,从而提供所需的任何模型。

如果您使用的是局部语言,也可以使用@{Html.RenderPartial("_articles/AspNetCore3/WhatsNew");}。但不要忘记,您需要使用剃须刀代码块@{}

将其包装起来

文件路径可能会有所不同,具体取决于您从何处渲染“部分”。

关于使用“布局”页面,您只需在cshtml页面顶部声明您想要的布局。下面的示例:

@page
@model Project.Pages.ProjectModel
@{
    ViewData["Title"] = "Test Page";
    Layout = "~/Pages/Shared/_Layout.cshtml";
}

您还可以使用<partial>标记在.NETCore 3.1中呈现部分。下面的示例:

<partial name="Shared/_ProductPartial.cshtml" for="Product">

标记助手是.NET Core中的 new 。为了向后兼容,HTML Tag帮助器仍然存在。

部分标签上的Microsoft文档位于here

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...