Viewmodel数据绑定

时间:2015-06-10 08:54:52

标签: c# asp.net-mvc entity-framework

使用viewmodels尝试着解决它,因为我们开始了解使用Entity Framework模型显示数据的项目的一半,这不是我们应该这样做的方式,所以我们'重新尝试学习正确的方法,或者我认为我们是正确的。

我在数据库中有一个名为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的控制器,它有一个IndexR的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);
        }

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

任何帮助都会受到极大的赞赏,因为我们迫切希望再次前行:)

由于

1 个答案:

答案 0 :(得分: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);
    }
相关问题