我需要从数据库中提取数据并填充视图模型,有没有更好的方法来做到这一点? 目前我正在做这样的事情。Asp.net mvc3:如何从数据库中提取数据并在一个目标中填充视图模型?
ViewModel vm = new ViewModel();
var recentBill = context.Money.Take(10);
foreach (var r in recnetBill)
{
vm.lst.Add(r);
}
我需要从数据库中提取数据并填充视图模型,有没有更好的方法来做到这一点? 目前我正在做这样的事情。Asp.net mvc3:如何从数据库中提取数据并在一个目标中填充视图模型?
ViewModel vm = new ViewModel();
var recentBill = context.Money.Take(10);
foreach (var r in recnetBill)
{
vm.lst.Add(r);
}
假设你的视图模型是这样的:
public class ViewModel
{
IEnumerable<Money> lst { get; set; }
// other properties
}
只是这样做:
public ActionResult GetMonies()
{
var monies = context.Money
.Take(10)
.ToList();
var model = new ViewModel { lst = monies };
return View(model);
}
IEnumerable
具有ToList()
函数返回所述类型的列表。
vm.lst = context.Money.Take(10).ToList(); // returns a List<Money>
我会建议你防止改变ViewModel.lst的可能性,即善堂的类型应该是IEnumerable而不是List/IList(当然,如果你的代码不需要List功能)。此外,我想你不要修改lst引用,所以你可以通过构造函数移除setter并初始化lst。
public class ViewModel
{
public ViewModel(IEnumerable<Money> lst)
{
this._lst = lst;
}
private readonly IEnumerable<Money> _lst;
IEnumerable<Money> Lst
{
get
{
return this._lst;
}
}
// other properties
}
public ActionResult GetMonies()
{
var model = new ViewModel(context.Money.Take(10).ToArray());
return View(model);
}
此方法保证您的代码的消费者不会意外修改您的ViewModel.Lst。