我在别人的源代码中看到了这样一个页面(ErrorMsg.aspx),主要是用来显示用户操作错误的提示信息:public partial class ErrorMsg : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Session["Msg"] != null && !string.IsNullOrEmpty(Session["Msg"].ToString()))
                    errorMsg.InnerHtml = Session["Msg"].ToString(); 
                else if(ErrMsg!=null&&ErrMsg.Length>0)
                    errorMsg.InnerHtml = ErrMsg;             }
        }        /// <summary>要显示的错误信息内容
        /// </summary>
        public static string ErrMsg { get; set; }//在这里设置成了static 
    }
使用这个页面时用这样的方式,例如在另外一个页面中:protected void ibtnLogin_Click(object sender, ImageClickEventArgs e)
{
    string user = txtLoginId.Text.Trim();
    string pwd = txtPwd.Text.Trim();
    if (user.Length < 1)
    {
        ErrorMsg.ErrMsg = "通行证不能为空!";
        Response.Redirect("ErrorMsg.aspx");
    } else if (pwd.Length < 1)
    {
        ErrorMsg.ErrMsg = "密码不能为空!";
        Response.Redirect("ErrorMsg.aspx");
    }    ……
}
第一次看到的时候觉得这样挺方便的。但是,后来又觉得这样似乎不行。假如有同时有两个用户因为不同的操作导致而要显示错误页面提示。这样个用户的提示信息不相同,但由于
ErrorMsg.ErrMsg 是static 变量,所以当两个用户同时请求时只会显示一个结果。我就想问一下我上面的分析正不正确?大家又在用什么方式显示错误提示信息呢?
如果有好的方法而我又没有见过的就加分吧。

解决方案 »

  1.   

    一看就知道是小型的项目
    用户的错误信息,用static做什么?
      

  2.   

    面向对象编程……这个页面是一个对象。ErrMsg是这个对象里面的一个静态变量而已。每个人打开这个页面,都是从一个类中实例出来的不同的对象。我理解的对否?
      

  3.   

    参数使用什么传呢?
    是把错误信息放在URL中吗?这样我不喜欢啊...
      

  4.   

    自定义错误处理日志如log4net
    还有application_error
      

  5.   

    传在url中然后加密下!
    不然就用session,cookie,application等吧
      

  6.   

    错误页面 一般都用配置文件配置的,如果发生404,500错误等,然后跳到相应的错误页面。
    配置文件里面有一项是<CustomError>,可以如下配置:
    <customErrors mode="RemoteOnly"     defaultRedirect="503.aspx">
        <error statusCode="404" redirect="http://www.aspxboy.com/404.aspx"/>
        <error statusCode="500" redirect="http://www.aspxboy.com/500.aspx"/>
    </customErrors>
      

  7.   

    log4net   这个挺好,传值的时候,把错误提示传值过去。我的项目就这么做的