ViewModel フィールドを割り当てる場合、データの表示方法を決定する ViewModel オブジェクトにドメイン オブジェクトを直接渡す必要がありますか、それともサービスなどの別のクラスでモデルから ViewModel にデータを割り当てる必要がありますか?
また:
編集:ビューモデルをレシーバーとプレゼンターに分割することに意味はありますか? (更新時に特定のフィールドのみをバインドする代わりに?)
ViewModel フィールドを割り当てる場合、データの表示方法を決定する ViewModel オブジェクトにドメイン オブジェクトを直接渡す必要がありますか、それともサービスなどの別のクラスでモデルから ViewModel にデータを割り当てる必要がありますか?
また:
編集:ビューモデルをレシーバーとプレゼンターに分割することに意味はありますか? (更新時に特定のフィールドのみをバインドする代わりに?)
通常、コントローラ アクションはビジネス オブジェクトを取得し、viewmodel が必要とするものを配置します。
フィールド Name、Address、Id を含むビジネス オブジェクトがあり、View が Name のみを表示する必要がある場合、ViewModel にはフィールド「Name」のみがあり、コントローラー アクションはそれに値を設定します。ViewModel は、ビジネス クラスについて何も認識してはならず、表示する必要があるものだけを認識している必要があります。
主な/唯一のロジックは「表示ロジック」です。これは、「TotalAmount が負の場合、CSS クラスの negativeNumber で表示する」のようなものです。
SoC のために、そのロジックが View に関連している場合、それらは ViewModel または View 自体に存在しても安全ですが、ビジネスまたはプログラムに関連している場合は、それぞれモデルとコントローラーに配置します。
私の経験では、サービスを使用してモデルをビューモデルにマップしました。ViewModels にロジックを入れません。
余談ですが、AutoMapperを調べて、マッピングを支援することはおそらく価値があります。繰り返しのマッピング ロジックの記述を削減するのに確実に役立ちます。