Stackoverflow是建立在MVC上的,并且做了一堆简单但很好的事情,包括日期和数字(回答计数,投票等等).我假设这完成了几个静态助手类.
我的问题是视图应该调用这些辅助对象还是控制器应该调用这些辅助对象并将结果嵌入到ViewData中?
控制器填充视图数据
控制器加载模型/数据
Controller使用DateHelper静态方法将日期转换为友好字符串
提供友好日期字符串以通过ViewData查看
控制器使用模型和视图调用填充视图数据DateHelper
控制器加载模型/数据
Controller提供了通过ViewData查看的模型
当ViewData绑定到HTML时,它调用DateHelper静态方法
我怀疑1号是正确的方法,但是看起来有点混乱,因为你可以使用模型列表并且很容易在视图中循环.如果您基于一组模型实例处理并生成一堆友好字符串,并且该模型没有可以附加到特定实例的位置,则最终会向ViewData发送两个不同的数据列表.对?
你的想法很感激.
根据您的要求,您将得到不同的答案.我个人喜欢选项#2,因为我希望ViewData是原始数据并选择它在View中的呈现方式.对我来说,在视图中这样做是完全可以的,因为它是一个视角关注点.
但是,我知道我自己团队中的人不同意我的意见,建议控制器返回一个演示模型,而不仅仅是一个模型(我也同意这个模型),它应该在将模型发送到之前处理所有这些转换.视图.在这种情况下的观点应该是超级愚蠢的.
在这种情况下,我不认为每个人都有一个绝对正确的选择.我会根据你的经验选择其中一个并坚持下去.