我创建了一个非常简单的帮助类,可以在我的 ASP.Net 页面中使用。这个想法是,它应该是一种非常简单的方法来记录页面错误或成功(不是表单验证错误),然后将其显示给用户。
在我的公共助手类中,我有一个具有某些属性的类,如下所示:
public class UserMessage
{
public UserMessage()
{
Messages = new Dictionary<string, string>();
}
public string SummaryMessage;
public Dictionary<string, string> Messages;
public bool ShowMessages;
public bool ShowAsError;
}
然后我有一个变量,用于存储 UserMessage 类的实例,如下所示:
私有静态 UserMessage _userMessage { 获取;放; }
然后我有两个公共静态方法,一个记录消息,另一个显示所有消息,如下所示:
public static void LogSummary(string summaryMessage, bool showIndividualMessages, bool showAsError)
{
_userMessage = new UserMessage();
_userMessage.SummaryMessage = summaryMessage;
_userMessage.ShowMessages = showIndividualMessages;
_userMessage.ShowAsError = showAsError;
}
public static string DisplayUserMessages()
{
if (_userMessage == null)
return string.Empty;
StringBuilder messageString = new StringBuilder();
messageString.AppendFormat("\n");
messageString.AppendLine(string.Format("<div class=\"messageSummary {0}\">", (_userMessage.ShowAsError) ? "invalid" : "valid"));
messageString.AppendLine(string.Format("<h3>{0}</h3>", _userMessage.SummaryMessage));
messageString.AppendLine("</div>");
return messageString.ToString();
}
我遇到的问题是 _userMessage 变量必须是静态变量,否则我会收到错误消息“非静态字段需要对象引用......”。变量为静态的问题在于它保留在内存中,因此如果用户收到错误消息然后访问另一个页面 - 仍然会显示错误消息!
我确定这是因为我错过了 OOP 101,但我应该如何更正呢?