簡體   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