代码之家  ›  专栏  ›  技术社区  ›  Arnis Lapsa

如何构造视图/控制器/操作(/areas?)在ASP.NET MVC应用程序中?

  •  1
  • Arnis Lapsa  · 技术社区  · 14 年前

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

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

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

    因此,为了避免不必要的胡须, 问题是-如何正确地构造这个东西(什么应该是控制器、动作, 它们如何交谈 彼此)?

    我很困惑,因为下面的选项卡就像一个单独的岛。


    在模型中-有一个奇怪的事情:1对1的关系。就像是有一场 比赛 (foo),和 参与者 。选项卡是对参与者的详细描述。

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

    所以-如果有两个根,那么如果它们都有控制器并且 competit is not really responsibility to hold all data,这看起来很自然。

    看起来子操作是可行的,但我预见到了一些复杂性。当选项卡包含一些操作时,它们将需要知道如何重定向回 competit details以及如何传递信息How to render correct tab。我想避免这种耦合,但似乎没有办法做到。

    上面有一些关于foo的最有用的信息。

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

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

    所以 问题 是-如何正确地构造这个东西(什么应该是控制器,动作, 他们怎么说话 为了避免不必要的胡须?

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


    在模型中-有一个奇怪的事情:1对1的关系。就像有一个 Contest (FO),以及 Participant . 选项卡是对 参与者 .

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

    所以-如果有两个根,如果它们都有控制器和 竞赛 不负责保存所有数据。

    看起来子操作是可行的,但我预见到了一些复杂性。当选项卡包含一些操作时,它们需要知道如何重定向回 竞赛 详细信息和如何传递信息如何呈现正确的选项卡。我想避免这种耦合,但似乎没有办法做到这一点。

    1 回复  |  直到 14 年前
        1
  •  3
  •   Peter    14 年前

    我可以为这些标签考虑几个选项…哪一个有意义可能取决于你的模型是什么样子的,你如何检索数据,在某种程度上,你的应用程序的其余部分是什么样子的。

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

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

    选项2b . 与2A相同,只是选项卡是使用Ajax按需呈现的。

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