1

替代文字

顶部有一些关于 foo 的最有用的信息。

在水平线之间有一些直接的动作,如果它们可用的话,可以在 foo 上执行/与 foo 一起执行。

下面是困扰我的事情。有标签,关于 foo 的详细信息。
这些选项卡也可以包含一些操作,并且可以非常主权。

所以问题是 - 如何正确构建这个东西(应该是控制器,动作,它们如何相互交谈)以避免不必要的麻烦?

我很困惑,因为下面的这些标签就像一个单独的岛屿。


在模型中 - 有一个奇怪的事情:1 对 1 关系。就像有一个Contest(Foo) 和Participant. 选项卡是 的详细说明Participant

目前我已经将它们都建模为聚合根。但这可能是一个错误的选择。

所以 - 如果有两个根,如果它们都有控制器并且Contest并不真正负责保存所有数据,这似乎很自然。

似乎子动作将是要走的路,但我预见到一些复杂性。When tabs will hold some actions, they will need to know how to redirect back to Contestdetails and how to pass info how to render correct tab. 我想避免这种耦合,但似乎没有办法做到这一点。

4

1 回答 1

3

我可以为这些选项卡想到几个选项......哪个有意义可能取决于您的模型是什么样的,您如何检索数据,以及在某种程度上,您的应用程序的其余部分是什么样的。

选项 1。使用 RenderPartial() 的局部视图。每个选项卡都是呈现模型的某些部分的局部视图。例如,您将有一个呈现 Model.FinancialInformation 的 FinancialInformation.aspx 部分视图。

选项 2a。带有 RenderAction() 的子动作。与上面类似,除了每个选项卡负责通过调用同一控制器上的操作方法或更可能是专门处理该信息的另一个控制器上的操作方法来提取自己的数据。

选项 2b。与 2a 相同,不同之处在于使用 AJAX 按需呈现选项卡。

我应该指出,这些选项都不是相互排斥的。您可以对前两个选项卡使用选项 1 (RenderPartial()),因为该数据本质上是模型的一部分。并且您可以将选项 2 (RenderAction()) 用于其他两个选项卡,因为例如,您可能有一个 ChartController 专门用于渲染图表...

于 2010-09-04T15:22:01.277 回答