视图模型数据绑定

本文关键字:数据绑定 模型 视图 | 更新日期: 2023-09-27 17:54:45

玩周围的视图模型,试图让我的头周围,因为我们来学习大约一半通过一个项目,使用实体框架模型来显示数据不是我们应该做的方式,所以我们试图学习正确的方式,或者我认为我们是。

我在数据库中有一个名为Users的表,并创建了一个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 for Index,如下所示:

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

到目前为止,我不知道下一步该去哪里,不幸的是,我读的所有东西都让我更加困惑。它确实显示了一个表,其中包含FirstName、LastName、Email和Company表头,但它没有在视图中显示任何数据。

任何帮助都将是非常感激的,因为我们迫切需要重新开始。

谢谢

视图模型数据绑定

假设这是你的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);
    }