ASP.Net ページで使用できる非常に単純なヘルパー クラスを作成しました。これは、ページ上のエラーまたは成功 (フォームの検証エラーではない) をログに記録し、それをユーザーに表示するための非常に簡単な方法であると考えられています。
私の public ヘルパー クラスには、以下に示すように、特定のプロパティを持つクラスがあります。
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 { get; 設定; }
次に、次のように、2 つの public static メソッドを用意します。1 つはメッセージをログに記録し、もう 1 つはすべてのメッセージを表示します。
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 を見逃したためだと確信していますが、これをどのように修正すればよいでしょうか?