【问题标题】:Loading ViewComponent data on demand in an asp.net core razor page with multiple tabs在具有多个选项卡的 asp.net core razor 页面中按需加载 ViewComponent 数据
【发布时间】:2019-05-09 20:24:39
【问题描述】:

我希望创建一个包含多个引导选项卡的剃须刀页面。

Razor 页面:Customers/Edit.cshtml 页面标签:[客户信息] [联系人] [订单]

根据我所做的研究,我相信 ViewComponents 或 Partial Views 将成为我的朋友,因为它可以将每个部分分解为拥有自己的模型并具有可重用性。

但是,我有点困惑如何避免从客户/编辑页面模型同时加载客户信息、联系人、订单的所有数据。

我的目标是做到这一点,以便在单击选项卡时加载数据。

【问题讨论】:

  • 除非您的标签触发页面重新加载,否则您可能必须通过 JavaScript 执行此操作并在标签点击时加载数据

标签: c# asp.net-core asp.net-core-mvc razor-pages asp.net-core-viewcomponent


【解决方案1】:

在 MVC 和 Core 中,我使用各种方法,具体取决于我当时如何看待应用程序。

如果您在一个视图模型中拥有所有内容,那么引导选项卡只会显示已呈现给客户端的内容。如果您需要在每个选项卡中进行编辑,则此方法效果很好(数据开销不大)。我可能会使用许多采用视图模型但只处理一个选项卡的功能的操作。还值得添加一个操作参数,让您在呈现视图时选择可见选项卡。 SAVE 选项可以很简单,使用一种业务层方法来处理创建和更新场景。

如果只是显示数据和指向其他地方的链接,我可能会使用 javascript 方法在每个选项卡从相关操作激活时加载它的 HTML。如果要执行更改操作,则必须在每个选项卡中进行管理。主视图非常简单,使用 DIV 占位符包含从每个选项卡的每个操作呈现的 HTML。您可能会使用 javascript 进行更新操作,但您也可以使用带有 ajax 助手的标准表单/帖子来仅呈现更新操作所需的 DIV 内容。

我有时会使用引导对话框进行更新,该对话框由 javascript 控制。在这些情况下,我的更新操作返回带有布尔值的 JSON 以指示通过/失败,因此返回的消息是错误消息或成功消息。 JavaScript 用于在成功时更新标签内容

没有一种方法比另一种更好

【讨论】:

  • 我明白了,我想弄清楚是否有一种方法可以只使用纯 asp.net 核心和 razor 按需加载。但是根据您所说的,我要么在单个视图模型中一次全部加载它,要么甚至在多个视图模型中加载它,并根据需要显示/隐藏数据。但如果每个选项卡上有大量数据,我想唯一的方法是使用 Javascript/jQueryAJAX。有意义吗?
  • 您可以在 ajax 调用或 Ajax.BeginForm 控件中使用少量 javascript。看看我几个月前给出的分析器stackoverflow.com/questions/52527536/…
猜你喜欢
  • 2021-04-08
  • 2019-04-16
  • 1970-01-01
  • 2019-12-27
  • 1970-01-01
  • 2018-04-05
  • 2018-12-20
  • 2020-12-10
  • 2019-04-17
相关资源
最近更新 更多