0

我正在使用带有 Razor 页面的新 asp.net core 2.0 构建一个网站。我在插入 html 块以供重用时遇到了麻烦(例如菜单)。我在这里问,我得到的答案是使用 @{Html.RenderPartial

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

但是,这是我的困惑:在 Microsoft 的文档中,他们说得很清楚,现在有了新的 asp.net core 2.0,您应该将 @page 放在您创建的每个页面(.cshtml 文件)中。

所以,现在的问题是:在新的 asp.net core 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 块呢?

谢谢

4

1 回答 1

2

Razor Pages 构建在 MVC 框架之上,并重用了许多 MVC 原语。因此,许多在 MVC 中有效的东西也适用于 Razor Pages(但不是全部)。

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

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

Razor Pages 不是 MVVM。它实际上是页面控制器模式的实现。可能出现混淆的地方是PageModel。这是 MVC 控制器和视图模型的混合体,因为它包括操作方法(可以返回IActionResult),并且它的公共属性作为模型的属性公开给 Razor 内容页面。

于 2018-08-06T10:09:40.163 回答