Asp.net mvc3:如何从数据库中提取数据并在一个目标中填充视图模型?

时间:2011-01-22 05:15:24

标签: asp.net asp.net-mvc linq entity-framework asp.net-mvc-3

我需要从数据库中提取数据并填充视图模型,有没有更好的方法来执行此操作? 目前我正在做这样的事情。

ViewModel vm = new ViewModel();
var recentBill = context.Money.Take(10);
foreach (var r in recnetBill)
{
    vm.lst.Add(r);
}

3 个答案:

答案 0 :(得分:2)

IEnumerable具有ToList()函数,该函数返回所述类型的列表。

vm.lst = context.Money.Take(10).ToList(); // returns a List<Money>

答案 1 :(得分:1)

我建议你防止更改ViewModel.lst的可能性,即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。

答案 2 :(得分:0)

假设您的ViewModel如下所示:

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);
}