【问题标题】:Nested ViewComponent, is it possible?嵌套的ViewComponent,可以吗?
【发布时间】:2017-03-08 21:01:12
【问题描述】:

尝试实现下图的布局,想请教一下关于页面布局架构的最佳实践。在页面的每个部分或部分视图中都有独立的 ViewComponents 更好吗?是否可以嵌套 ViewComponents?

这个想法是在不同页面的其他位置重用这些部分。这个概念与我们以前的 Web 部件非常相似,但现在我尝试用 Asp 实现类似的东西。网络核心。

【问题讨论】:

  • 是否可以嵌套视图组件? 可以。只需在父视图组件的视图中包含对内部视图组件 (Component.InvokeAsync()) 的适当引用,就好像您在页面中执行此操作一样。
  • 拥有独立的视图组件...还是部分视图更好?这是一个主观问题,可能会产生意见,而不是答案。
  • 非常感谢鲍勃。我可以理解这里没有正确或错误的方式,但我想看看在这种特定情况下这两种方式的利弊。

标签: asp.net-core asp.net-core-viewcomponent


【解决方案1】:

是的,可以嵌套View Components

要记住的重要事项:

  • 你应该将你的视图结构保持在Components文件夹下
  • 您应该将ViewComponent 类保留在ViewComponent 文件夹下
  • 当您将component1 嵌套到component2 并同时将component2 嵌套到component1 时,您应该自己控制无限循环

注意:您很可能需要您的组件包含edit/save/update 功能。据我了解,View Components 应该是views,因为他们只有InvokeAsync 而不是UpdateAsync。因此,如果您想实现任何类型的保存逻辑,则需要自己处理(例如通过AJAX 调用)。这是可能的(我已经验证),但它需要在JavaScript 的客户端熟悉Microsoft.jQuery.Unobtrusive.Ajaxhandle responses(有时包括在JS 中替换DOM 元素内部HTML与您从服务器响应中获得的信息)。您还需要决定在哪里放置视图组件更新端点的控制器操作(可能是 View Components 的特殊控制器类)。

【讨论】:

    猜你喜欢
    • 2012-03-16
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    • 2012-01-12
    • 2010-10-01
    • 2017-03-07
    • 1970-01-01
    相关资源
    最近更新 更多