代码之家  ›  专栏  ›  技术社区  ›  KaptajnKold

谁负责下一个视图?

  •  3
  • KaptajnKold  · 技术社区  · 14 年前

    假设某个应用程序具有多个视图(窗口),根据用户操作的不同,这些视图在不同时间可能可见,也可能不可见。例如,有时应用程序可能需要用户填写带有附加详细信息的表单,有时则可能不需要。要求特定视图可见是控制器的责任吗?

    3 回复  |  直到 14 年前
        1
  •  3
  •   James Hull    11 年前

    一个请求进来,老板看着它,想“人力资源管理。。。这里有很多工作要做。我需要从我的数据库中获取一些数据。幸好我有下属!嘿,模特,过来。我需要你去把DAL的所有信息都拿出来。”

    把模型想象成一个开发者。做所有真正辛苦的工作,弄脏他的手,没有模型,整个系统就会崩溃。它启动并执行所有业务和域逻辑。然后它又回到老板那里,交给他所有的辛苦工作。”给你。

    基本上,控制器控制MVC模式中的所有流。它决定调用什么模型,渲染什么视图,以及从模型中传递什么数据到视图(ViewModels)。

    您可以从控制器调用其他控制器。例如,如果你的主页上有一个搜索框,当用户点击搜索时,它可以调用搜索控制器上的索引功能。在我上面的比喻中,它类似于一个部门将一个工作传递给另一个部门。然后整个过程又开始了,老板为当前的请求招聘他所需要的员工。

        2
  •  0
  •   DanDan    14 年前

    控制器。控制器视图不是一对一关系。一个控制器可以有许多视图(想想向导类型的情况)。如果这超出了您的控制,控制器的视图实际上可以是另一个控制器,这个控制器负责您的多个视图。

        3
  •  0
  •   Neil McGuigan    13 年前

    你要找的是一个应用程序工作流管理器,或应用程序控制器。

    http://martinfowler.com/eaaCatalog/applicationController.html

    比如说,你有一个联系人列表,点击创建按钮,创建一个新的联系人。保存成功后,create表单将消失,您将再次看到联系人列表。

    但是,假设您正在创建一个联系人作为报价的一部分。创建联系人后,您不想返回联系人列表,而是要返回订单。

    您可以使用switch语句来确定下一步要做什么,或者使用状态机,或者类似于:

    http://www.springsource.org/spring-web-flow

    Windows工作流基础 http://msdn.microsoft.com/en-us/netframework/aa663328