我创建了一个静态类来保存用户消息,例如“项目成功添加”或“密码成功更改”等。类内部是一个包含所有消息的静态字典。字典的键是 UserId。然后我有一个在 _Layout.cshtml 中呈现的动作,这样即使消息被重定向到页面外,它们也会跟随用户。
例如,我可能允许用户“添加”一个项目,然后一旦成功添加该项目,它将重定向到该项目的列表页面,然后显示消息“项目已成功添加”。
这在我部署到我的生产站点之前效果很好,我注意到消息“滞后”。我会添加一个项目,然后它会重定向到列表页面,但不会显示消息。然后我将导航到应用程序中的其他位置,然后该消息将显示在该页面上。
任何想法为什么会发生这种情况?
这是我的 UserMessageManager 的代码
public static class UserMessageManager
{
private static readonly Dictionary<int, Queue<UserMessage>> UserMessages = new Dictionary<int, Queue<UserMessage>>();
public static void Add(int userId, string message)
{
if (string.IsNullOrWhiteSpace(message))
return;
if (!UserMessages.Keys.Contains(userId))
{
UserMessages.Add(userId, new Queue<UserMessage>());
}
UserMessages[userId].Enqueue(new UserMessage { Message = message});
}
public static List<UserMessage> Get(int userId)
{
if (!UserMessages.Keys.Contains(userId))
{
UserMessages.Add(userId, new Queue<UserMessage>());
}
var messages = new List<UserMessage>();
while (UserMessages[userId].Any())
{
messages.Add(UserMessages[userId].Dequeue());
}
return messages;
}
}
public class UserMessage
{
public string Message { get; set; }
}
编辑:经过一番玩弄之后,消息有时甚至会“聚集”起来。创建一些“项目”后,我将在字典中添加一条消息,这些消息会突然在看似随机的时间同时显示。