我有一个列出所有用户的索引页面。这在用户控制器中有以下内容 -
public ViewResult Index()
{
return View(userRepository.AllIncluding(user => user.Roles));
}
然后视图从
@model IEnumerable<TRS.Models.User>
然后使用
@foreach (var item in Model) {
循环遍历我模型中的所有用户。
我现在需要将我的模型更改为包含 User 模型和扩展 UserDetails 模型的 ViewModel。
我已更改我的索引视图以使用视图模型 -
@model IEnumerable<TRS.ViewModels.RegisterViewModel>
但我不知道我应该如何在我的控制器中填充 ViewModel -
public ViewResult Index()
{
var viewModel = new RegisterViewModel
{
UserName = "???"
FirstName = "???"
LastName = "???"
};
return View(viewModel);
}
我假设我需要创建视图模型的一个实例,然后将其传递给视图。但我不明白如何获取每个单独项目的数据。我显然需要在这里获取所有用户的所有数据,然后在我看来遍历它们。任何想法我应该在上面的控制器中做什么?应该用什么代替“???” 这样会用所有数据填充 viewModel 吗?或者这是错误的方法?
谢谢
编辑 - 添加模型 -
public class User
{
[Key]
public string UserName { get; set; }
public virtual ICollection<Role> Roles { get; set; }
public virtual UserDetails UserDetails { get; set; }
}
public class UserDetails
{
[Key]
public string UserName { get; set; }
public string Firstname { get; set; }
public string Lastname { get; set; }
[Required]
public virtual User User { get; set; }
}
编辑 - 从视图 -
<td>
@foreach (Role role in item.Roles){
@role.RoleName <br />
}</td>