首页 > 解决方案 > 在带有 Razor Pages Viewcomponent .Net Core 2.1 的选项卡中使用多个模型

问题描述

我的要求比我要解决的平均单个 Viewcomponent 稍微复杂一些。

我使用 .Net Core 2.1 和 Entity Framework 构建了一个带有 Razor Pages 的 Web 应用程序

在其中一个页面上,我有一个选项卡式视图,用于输入和显示各种格式的信息,我现在将每个“选项卡”构建为一个单独的剃须刀页面,因为它们都使用多个模型,一个用于显示,一个用于捕获数据。我尝试过使用部分视图,但没有任何运气,因为当我尝试更改选项卡时,整个页面会重新加载,这并不理想,而且速度有点慢。

输入 Viewcomponents,我可以得到一个简单的视图组件,它使用一个模型来正常工作,但是对于我注入/绑定了 2-3 个模型的其他选项卡,我似乎找不到实现这一点的方法。我对框架要求太多了吗?

注意。我正在尝试仅使用带有 CSharp 而没有 Javascript 的剃须刀页面来执行此操作。这甚至可能吗,还是我应该认输并转向Angular-MVC?

标签: c#razorentity-framework-coreasp.net-core-2.1asp.net-core-viewcomponent

解决方案


有几个选项可供您使用。老实说,你最好的前进道路是一个包装类,如果你愿意的话,本质上是一个模型的模型。您只需为您实际需要的每个单独模型创建一个带有属性的类。然后,这允许您将其用作页面的模型,但仍可以访问选项卡的所有单独模型。

视图组件是一种有效的方法,但您应该意识到两件事:

  1. 视图组件渲染是完全独立的。换句话说,您的主要动作/视图基本上变成了一个存根,而不是真正自己做任何事情。相反,用于构建模型并将其传递给每个选项卡的视图的所有逻辑都包含在与该选项卡对应的视图组件中。

  2. 视图组件只是将 HTML 渲染到页面。您不能发布到视图组件。您仍将发布到您的实际主要操作,因此需要进行设置以处理相关选项卡正在执行的任何操作。

最后,如果您不想每次更改选项卡时都往返于服务器,那么您至少需要将 JavaScript 用于选项卡界面。保持不动的标签切换是动态功能,只有 JavaScript 才有可能。


推荐阅读