使用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表头,但它不会在视图中显示任何数据。
任何帮助都会受到极大的赞赏,因为我们迫切希望再次前行:)
由于
答案 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);
}