在客户端,我以针对视图需求定制的方式显示数据。
当用户保存数据并将其发送到服务器时,我不想重塑数据
客户端以适应我的域的要求。
要将我的 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 中?
- 客户端?
- 控制器动作?
service 不是选项,因为它不应该知道视图模型。