我创建了一个非常简单的帮助类,我可以在我的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类的一个实例,像这样的变量:
private static UserMessage _userMessage {get;组; }
我然后有两个公共静态方法,一个用于记录一个消息,该其他显示所有的消息,例如:
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,但我应该怎么纠正呢?提前
感谢 铝
您无法从静态方法访问非静态变量,这就是为什么它在您将_userMessage字段设置为静态后会起作用。 – 2012-04-25 12:38:13
更大的问题是ASP.NET中的'static'意味着每个请求/用户都将使用相同的变量。 – 2012-04-25 12:39:34