在客户端,我按照视图需求自定义的方式显示数据。将视图模型重塑为模型
当用户保存,并将数据发送到我不想重塑上
客户端的数据,以适应我的域名要求的服务器。
要重塑我的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; }
}
的所有数据,我需要为我的模型周期是RowViewModel内。
我需要我的SavePeriodListViewModel重塑到LessonplannerResponse
当然AutMapper可以处理的RowViewModel以期映射,但我的问题是不是在这方面。
AutoMapper映射不会改变集合的形状。
我应该在哪里放置linq重塑代码?或者更一般的问,我应该在asp.net mvc中把这些代码放在哪里?
- 客户端?
- 控制器操作?
服务是没有选择的,因为它不应该知道视图模型。
Elist Automapper很好! – IamStalker 2013-03-02 12:34:46