【发布时间】:2009-11-21 17:54:38
【问题描述】:
我正在开发基本的 GUI 应用程序。我有计算时间的模型类,我需要显示这个时间以特定格式标记。根据 MVC 范式,正确的方法是什么?从逻辑上讲,我认为它应该在视图中格式化,但视图是标准的标签控件,对于这种情况,实现子标签类似乎有点压倒性的任务。如果我在控制器中格式化它会正确吗?或者我应该在模型中格式化它?
【问题讨论】:
标签: model-view-controller design-patterns
我正在开发基本的 GUI 应用程序。我有计算时间的模型类,我需要显示这个时间以特定格式标记。根据 MVC 范式,正确的方法是什么?从逻辑上讲,我认为它应该在视图中格式化,但视图是标准的标签控件,对于这种情况,实现子标签类似乎有点压倒性的任务。如果我在控制器中格式化它会正确吗?或者我应该在模型中格式化它?
【问题讨论】:
标签: model-view-controller design-patterns
我将演示视为视图的工作。根据用户的区域设置和偏好进行格式化显然是一个演示问题。这可能看起来有点开销,但你肯定会得到一个可重用的小部件,它可以在许多视图中使用吗?许多现有的视图框架将提供开箱即用的此类功能。
只是为了添加更多东西......在我的世界中,控制器甚至不知道视图显示什么数据。一个模型可能会提供各种可用的信息,一个视图可能只选择其中的一些。日期可能根本不显示,或者由一个漂亮的小日历小部件表示。无论哪种情况,控制器都不需要格式化日期。让 View 完成自己的工作,从 Model 或 DTO 中获取 Model 返回的数据并传递给 Controller,无需进行解释。
【讨论】:
如果您想测试格式化时间,则在控制器中包含格式化逻辑。
否则,将其留在视图中即可。
【讨论】:
我会将国际化格式放在控制器中,因为我相信视图旨在简单地显示它们所提供的内容。如果您的应用程序需要,这也使控制器能够为不同的语言环境选择完全不同的视图。
【讨论】:
根据 MVC 模式,您可能会考虑这样做:
1:您从控制器运行模型并获取计数时间 2:控制器从模型中获取结果并发送到视图 3:您在视图页面上输出相同的变量。
就是这样……
【讨论】: