2010-09-03 13 views
1

alt text如何在这种情况下在asp.net mvc应用程序中构建views/controllers/actions(/ areas?)?

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

水平线之间有一些即时动作,如果它们可用,在foo上执行。

以下是困扰我的事情。有标签,有关foo的详细信息。
这些选项卡也可以执行一些操作,并且可以相当主权。

所以问题是 - 如何正确构建这件事情,以避免不必要的拼劲(应该是什么控制器,动作,他们如何谈论对方)?

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


在模型中 - 有那么奇怪的事情:1对1的关系。这就像有一个Contest(Foo)和Participant。标签是Participant的详细说明。

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

所以 - 如果有两个根,这似乎很自然,如果他们都得到控制器和Contest是不是真的有责任保存所有数据。

看来,子动作将是要走的路,但我预见到一些复杂性。当选项卡将执行一些操作时,他们将需要知道如何重定向回Contest的详细信息以及如何传递信息如何呈现正确的选项卡。我想避免这种耦合,但似乎没有办法做到这一点。

+0

是AJAX的一个选项吗? – 2010-09-03 17:10:25

+0

@Darin它是,但我不确定我想要。认为它可以做得更好。 – 2010-09-03 18:22:42

回答

3

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

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

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

选项2b。除了使用AJAX按需呈现选项卡外,其他与2a相同。

我应该指出,这些选项都不是互斥。您可能会对前两个选项卡使用选项1(RenderPartial()),因为该数据本身就是您模型的一部分。你可以使用选项2(RenderAction())作为其他两个选项卡,因为,例如,你可能有一个ChartController专门提供图表......

+0

增加了一些细节。想听听你的更多评论。 :) – 2010-09-04 19:58:57