【问题标题】:MVC design question for forms表单的 MVC 设计问题
【发布时间】:2011-01-31 07:53:15
【问题描述】:

我正在开发一个需要处理大量相关表单数据的应用程序。我正在使用 MVC 结构,所有相关数据都在我的模型中表示,以及处理来自表单提交的数据验证。我正在寻找一些关于布置控制器的好方法的建议 - 基本上我将有一个巨大的表格,它将被分解为可管理的类别(类似于信用卡应用程序),用户在每个阶段/类别中前进填写答案。所有这些表单类别都与主要关系/对象相关,但彼此不相关。

将每个子表单/类别作为主控制器类中的一个方法是否更有意义(这将使一个控制器相当庞大),还是将每个类别分解为主控制器的一个子类更好?第二种方法更好可能只是为了简洁,但我很难看到为每个类别创建一个新方法(与模型通信并输出错误/成功)或创建一个新控制器之间的很大区别处理相同的功能。

提前感谢您的指导!

【问题讨论】:

    标签: model-view-controller web-applications oop


    【解决方案1】:

    我的偏好是为向用户显示的每个表单创建三元组 Form-Controller-Model。每当用户单击表单上的“下一步”按钮时,其控制器应与负责将提交请求分派到链中的下一个表单的后端管理器进行对话。反之亦然,如果单击“返回”按钮。最后一个表单有一个“完成”按钮,它将转到经理并传递最后的信息。

    这将避免继承,使您的代码更加健壮,并且可以单独测试表单。

    【讨论】:

    • 干杯鲍里斯,这种方法也很有意义。我正在使用 ORM,其中每个模型代表一个数据库关系,但是,在每个类别/子表单中,我可能会与多个模型进行交互,那么在这种情况下你的方法是否可行?如果我误解了,请道歉
    • 干杯肯尼,有模特和模特。 MVC 的模型是一个支持视图状态的对象,即你的表单。您正在谈论的模型是栅栏业务逻辑侧的域对象模型。这就像开一家商店。您将使用不同的成语向客户展示产品/服务以及管理股票和财务。
    【解决方案2】:

    我的偏好是将其全部保存在一个控制器中。它将填写申请/表格的所有相关流程保存在一个地方,尽管我不确定您所说的“庞大”程度。如果你决定将它拆分出来,我不会从主控制器子类化,而只是制作一些独立的控制器,可能名称相关,以便以后使用。

    【讨论】:

    • 谢谢瑞恩。 Massive 可能有点夸张,但可能会有大约 10 个类别/方法,所以我开始对将所有这些存储在一个控制器中这是否是糟糕的设计感到不舒服 - 但正如你所说,它确实是有道理的它是一种形式的一部分
    • 控制器旨在处理一件“事情”的工作——您想要定义的粒度取决于您。两个方向各有利弊,但我不知道是否真的有正确或错误的方式。
    猜你喜欢
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 2011-01-12
    • 1970-01-01
    相关资源
    最近更新 更多