2015-06-10 120 views
1

随着视图模型的发展,我们开始学习,关于使用实体框架模型显示数据的一个项目的一半时间了解并不是我们应该这样做的方式,所以我们试图学习正确的方式,或者我认为我们是无论如何。Viewmodel数据绑定

我有一个表称为数据库中的用户,并创建了一个ADO.net实体数据模型,我现在简单地称为“MainModel”,然后创建一个名为“MainViewModel”的新类文件。

在这个视图模型中,我从MainModel的User表中获取了属性,我们希望在表中的视图中显示属性以显示每个数据库条目。该MainViewModel代码如下:

namespace WebApplication9.Models 
{ 
    public class MainViewModel 
    { 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public string Email { get; set; } 
     public string Company { get; set; } 
    } 
} 

然后我有一个名为MainController控制器,它有一个ActionResult的指数是如下:

public ActionResult Index(MainViewModel viewModel) 
     {      
      var users = new User() 
      { 
       FirstName = viewModel.FirstName, 
       LastName = viewModel.LastName, 
       EMail = viewModel.Email, 
       Company = viewModel.Company, 
      }; 

      List<MainViewModel> viewModelList = new List<MainViewModel>(); 

      return View(viewModelList); 
     } 

到现在为止,我不知道在哪里去接下去,不幸的是,我读过的所有内容都让我更加困惑。它确实显示了一个带有名字,姓氏,电子邮件和公司表格标题的表格,但它不在视图中显示任何数据。

任何帮助将非常赞赏,因为我们不顾一切地再次去:)

感谢

回答

1

假设这是您HttpGet行动(虽然不知道为什么它需要你的viewModel作为参数?)您实际上并不与任何填充你的清单,你得从数据库中得到它,然后将其转化为您的视图模型准备显示,类似:

public ActionResult Index(MainViewModel viewModel) 
    {      
     var users = context.Users.ToList(); //use your dbContext 

     List<MainViewModel> viewModelList = users 
      .Select(u => new MainViewModel 
      { 
       FirstName = u.FirstName, 
       LastName = u.LastName, 
       Email = u.Email, 
       Company = u.Company 
      }).ToList(); 

     return View(viewModelList); 
    } 
+0

感谢您的@Matty - 我可能是有点昏暗,但我无法找到我的DbContext被称为。看过MainModel.edmx之类的东西,但无法找到它。任何想法,我可以检查它的名字? –

+0

@SouthWilts没有probs,在你的代码中搜索'DbContext',你会发现一个继承自它的类,就像'public partial class YourContext:DbContext',它会被EF自动生成。 – mattytommo

+0

我能找到的最接近的是:公共部分类SWGS_DashboardEntities:的DbContext { 公共SWGS_DashboardEntities() :基地( “NAME = SWGS_DashboardEntities”) {} 但在使用时SWGS_DashboardEntities,我们只得到.Equals和.ReferenceEquals 。 –