【问题标题】:Using multiple models in tabs with Razor Pages Viewcomponent .Net Core 2.1在带有 Razor Pages Viewcomponent .Net Core 2.1 的选项卡中使用多个模型
【发布时间】:2019-04-16 08:48:05
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • Razor 在服务器端呈现,这就是它为每个页面“加载较慢”的原因。 Angular 在初始加载时加载速度较慢,因此这取决于您的用例。如果您想要类似 SPA 的行为,您肯定会希望在 Razor 之上使用 JavaScript。
  • @Brian 感谢您的确认,我希望在不包含 JavaScript 的情况下摆脱它。

标签: c# razor entity-framework-core asp.net-core-2.1 asp.net-core-viewcomponent


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 谢谢,我考虑过包装类,但我使用 EF 和表模型来显示和编辑数据,我只是在思考使用修改后的状态数据模型走这条路线的复杂性,如果即使在服务器端没有大量的手动更新也是可能的。目前我已经在 PageModels 中拥有所有这些逻辑,因此将其包含在视图组件中会很容易。在这种情况下,看起来 Javascript 会更容易。在这里,我希望在没有它的情况下证明一点。
猜你喜欢
  • 2019-07-05
  • 2019-05-09
  • 2019-03-25
  • 2021-09-22
  • 1970-01-01
  • 2019-03-28
  • 1970-01-01
  • 1970-01-01
  • 2020-05-08
相关资源
最近更新 更多