クライアント側では、ビューのニーズに合わせてカスタマイズされた方法でデータを表示します。
ユーザーがデータを保存してサーバーに送信するとき、データの形状を変更したくありません
私のドメインの要件に合うようにクライアント側。
ViewModelをモデルに再形成するには、次のようにします。
var periods = periodListViewModel.CellViewModels
.SelectMany(c => c.Rows)
.Select(
p =>
new Period { LessonNumber = p.LessonNumber });
このコードは、正しい責任のある場所に配置する必要があります。
これらは私のクラスです:
public class SavePeriodListViewModel
{
public int SchoolyearId { get; set; }
public IEnumerable<CellViewModel> CellViewModels { get; set; }
}
public class CellViewModel
{
public CellViewModel()
{
Rows = new List<RowViewModel>();
}
public List<RowViewModel> Rows { get; set; }
}
public class RowViewModel
{
public string DayName { get; set; }
public string SchoolclassCode { get; set; }
public string Content { get; set; }
public int LessonNumber { get; set; }
}
public class LessonplannerResponse
{
public int SchoolyearId { get; set; }
public IEnumerable<Period> Periods { get; set; }
}
モデルPeriodに必要なすべてのデータは、RowViewModel内にあります。
SavePeriodListViewModelをLessonplannerResponseに再形成する必要があります
もちろん、AutMapperはRowViewModelからPeriodへのマッピングを処理できますが、私の問題はその領域にはありません。
AutoMapperは、コレクションを再形成するのではなく、マッピングしています。
linq再形成コードはどこに置くべきですか?または、より一般的な質問では、そのようなコードをasp.net mvcのどこに配置すればよいですか?
- クライアント側?
- コントローラーアクション?
ビューモデルを認識してはならないため、サービスはオプションではありません。