【问题标题】:Where is the best place to put this logic in an MVC design?将此逻辑放在 MVC 设计中的最佳位置在哪里?
【发布时间】:2016-06-02 21:08:05
【问题描述】:
我正在考虑在 ViewModel 类上设置一个 ReadOnly 属性,该属性返回一个格式化字符串,显示从同一类中的两个 Date 属性派生的日期范围。
该逻辑最好属于控制器还是视图模型?
如果最好的地方是控制器,那么我只需要 ViewModel 中的一个读/写属性,即 DateRangeForDisplay。如果可以将它放在 ViewModel 中,我将有 2 个日期属性和字符串只读 DateRangeForDisplay 属性。
【问题讨论】:
标签:
model-view-controller
【解决方案1】:
可能强烈基于意见,但是:
控制器根本不应该有数据属性。他们的工作是从 View/UI 获取事件并将其传播到 Model/ViewModel(具体术语取决于所选的架构风格)。
模型不应该关心数据是如何表示的,因此不具有这样的属性,除非出于某些性能原因。
ViewModels 是一种装饰带有状态和格式化数据的模型,这就是为什么这种组合的日期属性应该在 ViewModel 中。
我想说这对于 asp.net(或其他服务器应用程序模型)尤其如此,其中 viewModel 或多或少只是属性包,用于在将所有状态返回给客户端之前将所有状态放在一起。