表示层逻辑和服务/实体

时间:2014-10-29 15:34:18

标签: c# design-patterns architecture domain-driven-design

我有一个.net webform' NewShift.ascx'文件。它为您提供了一个界面,用于添加有关您正在工作(或刚刚工作)的新班次的信息。所以你工作了多少小时,你的班次经理等等。在我的代码背后,我想将日期创建标签的文本更改为当前日期(DateTime.Now)当且仅当它是在今天下午5点之前,否则明天就读(因为我不会进入的原因)。

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

你可以争辩,因为它是如此简单的逻辑,我可以在后面的代码中写出来,但是让我说我​​有很多这些简单的事情在发生(改变价值观,格式化)日期,根据逻辑显示值等。)

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

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

所以,如果我必须做以下事情:

  1. 根据X和Y
  2. 将标签的文字更改为今天或明天
  3. 将两个值一起添加,并根据用户首选项为该总和分配标签文本
  4. 有条件地隐藏基于星期几的复选框
  5. 这样的逻辑应该在哪里?在Shift对象上?或某种_shiftService?

    谢谢!

1 个答案:

答案 0 :(得分:0)

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

这两个显然都是表达问题。这意味着UI控件(ascx文件)应该做出这些决定。如果有意义,可以添加转换器,有关详细信息,请参阅IValueConverter Interface。它是为Windows Forms构建的,但您可以根据Web调整类似的内容。特别是使用网络表单,我发现这大大清除了标记。


  
      
  1. 将两个值一起添加,并根据用户首选项为该总和分配标签文本
  2.   

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

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

相关问题