带有路由的Razor页面局部视图

时间:2019-03-05 17:16:57

标签: asp.net-core asp.net-core-mvc razor-pages

我希望将Razor页面作为局部视图,但也可以将它们作为HTML片段单独获取,以便可以使用AJAX更新它们。

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

如何将CSHTML路由同时具有有效的模型?我使用的是ASP.NET Core 2.1,不幸的是升级不是一种选择。

2 个答案:

答案 0 :(得分:2)

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

_MyPartialView.cshtml

@model MyPartialViewModel

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

MyPage.cshtml

@page MyPageModel

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

答案 1 :(得分:0)

  

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

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

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

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