如何正确使用 asp.net razor-pages 中的部分视图?

How to use partial views in asp.net razor-pages properly?

我目前正在处理 asp.net 核心 mvc 项目。有一个主页(cshtml),其中包含一些数据和两个局部视图。

此页面的控制器包含操作,return模型到视图(具有模型绑定)。我猜想在控制器中为两个部分视图的 return 数据创建的另外 2 个操作会工作得很好。但是现在我的应用程序无法正常工作,因为它试图将数据从主页传递到部分视图,从而导致绑定错误(部分视图都有其独特的模型)。

我目前正在使用 <partial> 标签将我的部分视图添加到主视图。此标记包含一个 属性 view-data,它可以解决模型绑定问题。但是感觉创建一个带有很多子对象的大联合对象来传递它view-data 并不是一个好的做法。

所以我想就处理此类案件的最佳做法发表意见。像这样创建包含多个分离数据的页面的最佳方法是什么?

我目前的观点是,最好的方法是让主视图从控制器获取可行的信息,而在部分视图中通过 ajax 获取。但无论如何,仍然存在一个问题,即如何通过尝试将数据从主视图传递到局部视图的应用程序来绕过此错误(就像我想在局部视图中保留模型绑定以用 ajax 填充它)。

所以经过一番研究,我得出结论并找到了解决我的问题的方法。 PartialViews 不适用于此类情况。 PartialView 始终依赖于来自其父视图的模型信息。

相反,如果您想实现与我相同的行为,您应该使用 ViewComponents。它是完全独立的工具,能够进行自己的数据访问并构建它需要的任何模型。您还可以在视图甚至布局中的任何位置访问 ViewComponent,甚至可以按名称将参数传递给它。

我希望这篇文章对任何人都有帮助。这是 msdn 在 how to implement and use view components

上的官方指南