繁体   English   中英

表示层逻辑和服务/实体

[英]Presentation Layer Logic and Services / Entities

我有一个.net网络表单“ NewShift.ascx”文件。 它为您提供了一个界面,用于添加有关您将要工作(或刚刚工作)的新班次的信息。 这样的事情,例如您工作了多少小时,您的班次经理等。在我后面的代码中,如果且仅当今天下午5点之前,我想将创建日期标签的文本更改为当前日期(DateTime.Now)。将日期设为明天(出于我不愿讨论的原因)。

此外,我可能想根据用户以某种方式设置日期格式(例如,如果数据库中保存的设置将他们与一种文化相对于另一种文化相关联,而不是他们正在浏览该网站的当前国家/地区, )。

您可能会争辩,因为它是如此简单的逻辑,我可以在后面的代码中将其写出来,但是让我们说,我有很多这些简单的事情(更改值,格式化日期,基于逻辑显示值等)。

我的理解是,如果我在后面的代码中完成所有这些操作,这将是智能UI的反模式。 以上逻辑应该在哪里?

我听说没有贫血的领域模型,并确保我的实体可以提供用于回答领域特定问题(?)的功能。 我也听说过尽可能利用服务层。

因此,如果我必须执行以下操作:

  1. 根据X和Y将标签的文本更改为今天或明天
  2. 将两个值加在一起,然后根据用户偏好将标签文本分配给该总和
  3. 根据星期几有条件地隐藏一个复选框

这样的逻辑应该在哪里? 在Shift对象上? 还是某种_shiftService?

谢谢!

  1. 根据X和Y将标签的文本更改为今天或明天
  2. 根据星期几有条件地隐藏一个复选框

显然,这两个都是表示方面的问题。 这意味着UI控件(ascx文件)应该做出这些决定。 如果有必要,可以添加一个转换器,有关更多详细信息,请参见IValueConverter接口 它是为Windows窗体构建的,但是您可以为Web改编类似的东西。 尤其是使用Web表单,我发现这可以大大清除标记。


  1. 将两个值加在一起,然后根据用户偏好将标签文本分配给该总和

这实际上取决于这两个值是什么。 如果这些值在您的模型上,而您只需要显示它们的总和,并且该总和仅对表示有意义,而对业务流程没有意义,那么这将是一个表示关注点,您可以在标记中使用转换器或,如果您关注的是MVVM,则可以将该摘要放在视图模型的新名称属性下。

如果两个值的总和是某个业务流程的一部分,则该代码应在您的域中,并应返回已经具有总和的模型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM