如何正确使用asp.net剃须刀页面中的部分视图



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

此页面的控制器包含操作,该操作将模型返回到视图(具有模型绑定(。我猜想,在控制器中再创建两个操作,将数据返回到两个局部视图,效果会很好。但现在我的应用程序无法工作,因为它试图将数据从主页面传递到局部视图,从而导致绑定错误(局部视图都有其唯一的模型(。

我目前正在使用<partial>标记将部分视图添加到主视图中。此标记包含一个属性view-data,该属性将解决模型绑定的问题。但是,创建一个包含大量子对象的大型联合对象以使其通过view-data并不是一个好的做法。

因此,我想就处理此类案件的最佳实践发表意见。像这样创建具有多个分隔数据的页面的最佳方法是什么?

我目前的观点是,最好的方法是让主视图从控制器获得可行的信息,而在部分视图中,则通过ajax实现。但无论如何,应用程序试图将数据从主视图传递到部分视图时,如何绕过这个错误仍然是一个问题(比如,如果我想在部分视图中保留模型绑定以使用ajax填充它(。

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

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

我希望有人觉得这篇文章有帮助。以下是msdn关于如何实现和使用视图组件的官方指南

最新更新