在新的 ASP.NET 核心 2.0 中将 html 块插入 Razor 页面的正确方法是什么

What's the right way to insert html blocks into Razor pages in the new ASP.NET core 2.0

我正在使用带有 Razor 页面的新 asp.net 核心 2.0 构建网站。我无法插入 html 块以供重用(例如菜单)。我在这里问,得到的答案是使用@{Html.RenderPartial

然后,我用的时候还是报错。为了解决这个错误,我不得不从我想插入页面的 .cshtml 文件中删除 @page。我在这里得到答案的原因是因为 @{Html.RenderPartial 是 MVC 的一部分,因此它是一个局部视图,不能使用顶部的 @page页。

但是,这是我的困惑:在 Microsoft 的文档中,他们说得很清楚,现在有了新的 asp.net 核心 2.0,你应该在每个页面(.cshtml 文件) 你创造。

所以,现在的问题是:在新的 asp.net 核心 2.0 中插入 html 块以供重用的正确方法是什么,是否有正确的方法?

因为你好像要么用MVC,要么把@page去掉。但是微软说你必须把@page。 所以我很困惑。

这是他们写的: "。@page 必须是页面上的第一个 Razor 指令。"

来自此页面:https://docs.microsoft.com/en-us/aspnet/core/mvc/razor-pages/index?tabs=visual-studio

此外,新的 ASP.NET 核心 2.0 是 MVVM。那么,为什么我必须使用 MVC 才能重用 html 块?

谢谢

Razor Pages 建立在 MVC 框架之上,并重用了大量 MVC 原语。因此,很多在 MVC 中有效的功能在 Razor Pages 中也有效(但不是所有)。

Razor 页面是一个终结点。因此它需要 @page 指令。部分不是端点。它是一个可重用的组件。这就是为什么它不应该有 @page 指令。

既然你问了这个问题,ASP.NET Core 2.1 已经发布,其中包括 Partial taghelper。现在,这是在 Razor Pages(和 ASP.NET MVC Core,就此而言)中包含部分内容的推荐方法。

Razor Pages 不是 MVVM。它实际上是页面控制器模式的一个实现。可能会引起混淆的地方是 PageModel。这是 MVC 控制器和视图模型的混合体,因为它包含操作方法(可以 return IActionResult)并且它的 public 属性作为该模型。