すべてのユーザーを一覧表示するインデックスページがあります。これは、ユーザーコントローラーに次のようになります-
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>