【发布时间】:2010-06-08 11:00:26
【问题描述】:
我一直在使用我自己的错误报告模块,它结合了简单的 c# 和 jQueryUI 对话框。问题是一旦发生错误或成功,我确实将其值写入会话。它在有 Responce.Redirect 错误的页面上工作得很好,但在我发现错误然后返回相同表单的页面上却不行。
我的问题是为什么添加了 pre-postback 的会话无法加载到我在某些条件下有 return 语句的页面中。
除了会话之外,是否还有其他方法可以保存错误和成功消息?也许是全局变量或类似的东西......
代码示例
这是错误类
public static string getMessage()
{
HttpContext c = HttpContext.Current;
string messageType = "";
if (c.Session["errorMessage"] != null)
{
messageType = "errorMessage";
}
else if (c.Session["successMessage"] != null)
{
messageType = "successMessage";
}
if (!string.IsNullOrEmpty(messageType))
{
string[] messageBody = c.Session[messageType].ToString().Split('|');
StringBuilder userMessageSb = new StringBuilder();
userMessageSb.Append(string.Format("<div id=\"{0}\" title=\"{1}\">{2}</div>", messageType, messageBody[0], messageBody[1]));
// fix so message will not re-appear
c.Session.Remove(messageType);
messageType = userMessageSb.ToString();
}
return messageType;
}
public static void setSuccess(string successMessage)
{
HttpContext.Current.Session["successMessage"] = setMessage("success", successMessage);
}
public static void setError(string errorMessage)
{
HttpContext.Current.Session["errorMessage"] = setMessage("error", errorMessage);
}
private static string setMessage(string messageTitle, string messageBody)
{
return string.Format("{0}|{1}", messageTitle, messageBody);
}
我在重定向或返回之前设置了这样的消息
Errors.setError(my error is");
我的母版页底部出现这样的错误
<%= Errors.getMessage() %>
这是 JS
$(function () {
$("#errorMessage").dialog("destroy");
$("#successMessage").dialog("destroy");
if ($("#errorMessage").length != 0) {
$("#errorMessage").dialog({
modal: true,
height: 300,
width: 400,
buttons: {
Ok: function () {
$(this).dialog('close');
}
}
});
}
if ($("#successMessage").length != 0) {
$("#successMessage").dialog({
modal: true,
height: 300,
width: 400,
buttons: {
Ok: function () {
$(this).dialog('close');
}
}
});
}
});
【问题讨论】:
-
你能放一些你写的代码吗?这将有助于更好地理解。
标签: asp.net