带有路由的 Razor Pages 局部视图

Razor Pages Partial Views with routing

我希望将 Razor Pages 作为部分视图,但也能够将它们作为 HTML 片段单独获取,以便我可以使用 AJAX.

更新它们

如果我将 @page 放在局部视图的顶部,它会被路由但其模型对象将为 null。如果我删除 @page,该模型将有效,但我无法再单独获取部分视图。

如何让 cshtml 路由 并且 同时具有有效模型?我正在使用 ASP.NET Core 2.1,不幸的是升级不是一个选项。

你不能。只需使用您要共享的 HTML 创建一个局部视图,然后在您的 Razor 页面中调用该局部视图。然后,您可以在需要时直接使用局部视图。

_MyPartialView.cshtml

@model MyPartialViewModel

<div>Here's my HTML</div>

MyPage.cshtml

@page MyPageModel

<partial name="_MyPartialView" model="Model.MyPartialViewModelInstance" />

If I put a @page at the top of my partial view, it gets routed but its model object will be null. If I remove @page, the model will be valid however I can no longer GET the partial view separately.

部分页面或视图是包含 HTML 片段和服务器端代码的 Razor 文件,可包含在任意数量的页面或布局中。部分页面可用于将复杂页面分解为更小的单元,从而降低复杂性并允许团队同时处理不同的单元。

就像标准的 Razor 页面一样,部分页面支持 @model 指令指定部分数据模型的类型。所有渲染方法都有重载版本,这些版本采用在部分中使用的模型。

请注意,部分页面没有 @page 指令。这将使该文件成为一个完整的 Razor 页面,并导致在框架尝试调用它时未声明与模型相关的 NullReferenceException - 因为没有关联的 PageModel 文件。你可以参考Partial Pages in a Razor Pages application.