2009-12-21 50 views
0

我做我的编码在控制台和使用的system.console。在几乎每个if/else语句中写入行,以便在输入错误的值时显示错误消息,以说明是否出错。怎么过正尝试采用同样的类比网页形式,应该有,同时运行的条件是用户错误,错误消息可能会显示在屏幕上的用户。显示错误消息,在C#中网形成

我怎么去显示错误?我知道项目验证的,但不能适用,使用if和else。然而,如果我使用try catch,我不知道哪个代码向用户显示错误消息。但我知道肯定我不能使用SC.writelines。

的我的代码的样品是。请到建议.. 保护无效Login1_Authenticate(对象发件人,AuthenticateEventArgs E) { 串创建失败; string userType;

 strConn = "Provider=MIcrosoft.Jet.OLEDB.4.0;data Source=" + 
      Server.MapPath("App_Data/test.mdb"); 

     OleDbConnection mDB = new OleDbConnection(strConn); 

     mDB.Open(); 

     userClass aUser = new userClass(); 

     if (aUser.verifyUser(mDB, Login1.UserName, Login1.Password)) 
     { 
      userType = aUser.getUserDesc(); 

      if (userType.ToLower() == "customer") 
      { 
       Response.Redirect("StaffMenu.aspx"); 
      } 
      else if (userType.ToLower() == "front desk") 
      { 
       Response.Redirect("StaffMenu.aspx"); 
      } 
      else if (userType.ToLower() == "technician") 
      { 
       Response.Redirect("StaffMenu.aspx"); 
      } 
      else if (userType.ToLower() == "admin") 
      { 
       Response.Redirect("StaffMenu.aspx"); 
      } 
     } 
     else 
     { 
      e.Authenticated = false; 
     } 
     mDB.Close(); 

该程序转移到用户类何时运行验证方法,它这样做通过运行下面的代码博克..

公共BOOL verifyUser(MDB的OleDbConnection,串userIDStr,串userPwrdStr) { 串的SQLQuery; OleDbCommand cmd; OleDbDataReader rdr;

 //SC.Write("\n*******User Login********\nEnter User ID:"); 

     //userIDStr = userIDInt.ToString(); 

     //SC.Write("\nEnter User Password:");    
     //userPwrdStr = userPwrdStr; 

     sqlQuery = "SELECT UserID, UserPassword, UserDescription FROM UserTable WHERE UserID = " + 
      toSql(userIDStr); 
     cmd = new OleDbCommand(sqlQuery,mDB); 

     //Boolean valid = false; 
     //Boolean HasRows = false; 
     try 
     { 
      rdr = cmd.ExecuteReader(); 

      if (rdr.HasRows) 
      { 
       while (rdr.Read()) 
        if (userIDStr == (string)rdr["UserID"]) 
        { 

         if (userPwrdStr == (string)rdr["UserPassword"]) 
         { 
          userDescStr = (string)rdr["UserDescription"]; 
          if (userDescStr.ToLower() == "admin") 
          { 
           //SC.WriteLine("Welcome to Admin Main Menu"); 
           return true; 
          } 
          else if (userDescStr.ToLower() == "front desk") 
          { 
           //SC.WriteLine("Welcome to Front Desk Staff Main Menu"); 
           return true; 
          } 
          else if (userDescStr.ToLower() == "technician") 
          { 
           //SC.WriteLine("Welcome to Technical Staff Main menu"); 
           return true; 
          } 
          else if (userDescStr.ToLower() == "customer") 
          { 
           //SC.WriteLine("Sorry, Customers are not allowed access to the Administrative page"); 
           return true; 
          } 

         } 
         else 
         { 

          //SC.WriteLine("\nInvalid User Password, Please try again"); 
          //verifyUser(mDB); 

         } 
        } 
        else 
        { 
         //SC.WriteLine("Invalid User ID, Please try again"); 
         //verifyUser(mDB); 
        } 


       //HasRows = true; 
      } 
      rdr.Close(); 
     } 
     catch (Exception ex) 
     { 
      SC.WriteLine(ex.Message); 
     } 

     return false; 



    }//=================================end verify User() 

如果输入错误的用户名或密码怎么过的,我怎么能显示错误信息给用户作为其控制的是在不正确的值...

我希望能使用这个代码替换我的SC.writelines,它向用户显示消息......

回答

1

您可能会在字符串中建立一个错误列表,并将它们分配给表单上的标签或潜在的ul标签。

我也建议不区分用户名或密码是否是无效的。如果他们无法登录,则应显示“无法登录”消息。如果他们得到一个正确的用户名和一个不正确的密码,那么使用你的方法,我就会知道我已经猜到了一个正确的用户名,并且可能会在密码中敲出来。


另外,你看过内置的ASP.net登录控件和会员供应商吗?他们会为您处理大量此类问题,或者您可以推出与提供的控件集成的自己的产品。

+0

谢谢... ID拿不出意见的 – Selase 2009-12-21 15:26:30