View の 2 つの div を 2 つの ViewModel からのデータで埋めたいのですが、問題があります。
私の2つのビューモデル:
public class ChatLogsNameTimeViewModel
{
public UserProfile UserProfile { get; set; }
public string Message { get; set; }
public DateTime Time { get; set; }
}
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
public string Email { get; set; }
public bool IsOnline { get; set; }
public virtual ICollection<ChatLogs> ChatLogs { get; set; }
}
つまり、ビューの 1 つの div に ChatLogsNameTimeViewModel のデータを表示し、ビューの他の div に UserProfile のデータを表示したいということです。
これは、上記の両方のビューモデルを使用する私のビューモデルです:
public class ChatLogsUsersViewModel
{
public IEnumerable<ChatLogsNameTimeViewModel> ChatLogs { get; set; }
public IEnumerable<UserProfile> Users { get; set; }
}
そして、これはコントローラーでの私の Index() アクションです:
var chatLogs = db.getChatLog().ToList();
var users = dba.getOnlineUsers().ToList();
var view = new ChatLogsUsersViewModel(chatLogs, users);
return View(view);
私の問題は、ViewModel 属性にまったくアクセスできないことです。
ビューで foreach ループを作成すると、アクセスできるのは次のとおりです。
つまり、属性にアクセスして foreach で出力することはできません。
私はビューでこれを持っています:
@model IEnumerable<Chat.Models.ChatLogsUsersViewModel>
コントローラーで何かを正しく行っていないと思います。私はメソッドを持っておりgetChatLog()
、getOnlineUsers()
モデルに実装しています。それらは単独で問題なく動作します。それらを 1 つのビューで連携させる方法がわかりません。