私は自分のウェブサイト用のシンプルなプライベートメッセージシステムを作成しています。モデルは次のとおりです。
public class PrivateMessage : GlobalViewModel
{
[Key]
public int MessageId { get; set; }
public bool IsRead { get; set; }
public DateTime CreatedDate { get; set; }
[MaxLength(100)]
public string Subject { get; set; }
[MaxLength(2500)]
public string Body { get; set; }
public virtual UserProfile Sender { get; set; }
public virtual UserProfile Receiver { get; set; }
}
新しいメッセージがあるかどうかをすべてのページリクエストで確認したいので、ユーザーに通知できます。したがって、以下を含むベースビューモデルを作成しました。
public class GlobalViewModel
{
[NotMapped]
public virtual int NewMessages { get; set; }
}
他のすべてのビューモデルは、このクラスを継承します。ユーザーの新しいプライベートメッセージの量を取得するには、次のようにします。
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
DBContext db = new DBContext();
int userID = (int)Membership.GetUser().ProviderUserKey;
int newMessages = db.PrivateMessages.Where(a => a.Receiver.UserId == userID && a.IsRead == false).Count();
base.OnActionExecuted(filterContext);
}
私はこれに到達し、OnActionExecutingは実際にすべてのアクションで呼び出されます。しかし、私の質問は次のとおりです。
newMessagesをGlobalViewModelに追加するにはどうすればよいですか?
私が最終的にやりたいのは、これを「マスター」ビューで呼び出すことです
You have @Model.NewMessages new messages