我首先使用MVC-Viewmodel和EF模型作为我的项目
这些是我用于索引视图的Viewmodels:
public class IndexViewModel
{
public List<QuestionViewModel> Questionlist { get; set; }
}
&安培;
public class QuestionViewModel
{
public string QuestionText { get; set; }
public List<string> CoreValues { get; set; }
public List<string> SubjectTypes { get; set; }
public int QID { get; set; }
}
}
这是我的控制器操作:
public ActionResult Index()
{
List<Question> ListQuestions = Arep.getallquestion();
var model = new IndexViewModel();
model.Questionlist = new List<QuestionViewModel>();
foreach (var item in ListQuestions)
{
var QuestionViewModel = new QuestionViewModel();
model.Questionlist.Add(QuestionViewModel);
QuestionViewModel.QuestionText = item.QuestionText;
QuestionViewModel.QID = item.QID;
QuestionViewModel.CoreValues = new List<string>();
foreach (var Corevalue in item.CoreValue)
{
QuestionViewModel.CoreValues.Add(Corevalue.Cname);
}
QuestionViewModel.SubjectTypes = new List<string>();
foreach (var SubjectType in item.SubjectType)
{
QuestionViewModel.SubjectTypes.Add(SubjectType.Sname);
}
}
return View(model);
}
我的视图用户界面显示的是Questions.QuestionText
与CoreValue.Cname
和SubjectType.Sname
相关的列表。问题可以有许多CoreValues和SubjectType。
我想知道这段代码如何使用Automapper,我会很感激!
提前致谢!
祝你好运!
答案 0 :(得分:2)
未经测试,但是:
首先,你有CreateMap部分(通常是global.asax.cs中的部分)
Mapper.CreateMap<Question, QuestionViewModel>()
.ForMember(m => m.CoreValues, opt => opt.MapFrom(s => s.CoreValue.Select(x => x.Cname)))
.ForMember(m => m.SubjectTypes, opt => opt.MapFrom(s => s.SubjectType.Select(x => x.Sname)))
然后在你的控制器中,
var model = new IndexViewModel();
model.Questionlist = Mapper.Map(Arep.getallquestions(), new List<QuestionViewModel>());
return View(model);
顺便说一下,控制器的代码(没有自动播放器)可以通过简单的linq查询更加简洁!