带有路由的 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.
我希望将 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.