我希望将Razor页面作为局部视图,但也可以将它们作为HTML片段单独获取,以便可以使用AJAX更新它们。
如果在局部视图的顶部放置一个@page
,它将被路由,但其模型对象将为null
。如果删除@page
,该模型将有效,但是我将无法再分别获取局部视图。
如何将CSHTML路由并同时具有有效的模型?我使用的是ASP.NET Core 2.1,不幸的是升级不是一种选择。
答案 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。