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

Posted

技术标签:

【中文标题】如何在 Razor 页面中使用 MVC 部分视图和布局【英文标题】:How can I use MVC partial views and layouts inRazor Pages 【发布时间】:2020-12-14 07:48:48 【问题描述】:

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

似乎页面会更好地组织简单的页面,例如:

articles/AspNetCore3 -- 列出相关文章

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

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

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

【问题讨论】:

【参考方案1】:

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

您还可以使用@RenderPage("_MenuPage.cshtml", MyModel),它允许您通过将任何您喜欢的模型作为第二个参数提供给视图。

如果您使用的是部分,您也可以使用@Html.RenderPartial("_articles/AspNetCore3/WhatsNew");。但别忘了,你需要用剃刀代码块@包装它

文件路径可能会有所不同,具体取决于您从哪里渲染 Partial。

关于使用 Layout 页面,您只需在 cshtml 页面顶部说明您想要的 Layout。下面的例子:

@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 中的 事物。为了向后兼容,HTML 标记助手仍然存在。

部分标签上的 Microsoft Docs 位于 here

【讨论】:

我可以使用 标签助手吗? 是的,你绝对可以。 。这是关于部分标签的一个很好的链接。 docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/…。更新了我的答案以包含部分标记。

以上是关于如何在 Razor 页面中使用 MVC 部分视图和布局的主要内容,如果未能解决你的问题,请参考以下文章

消除部分视图 MVC 3 razor 中的重复 ID

如何使用 jquery 或 ajax 在 c#/asp.net 中为 MVC 项目更新 razor 部分视图

如何在同一个项目中同时拥有 MVC 和 Razor 页面?

mvc3中关于Razor视图中的及页面区别,以及在啥情况下用哪个页面,最好能有实例。

布局 ASP.NET Razor 页面中的模态

.NET Core - 为啥我应该使用视图组件而不是集成在 MVC 应用程序或 Razor 页面中的 Blazor 组件