Отображение сообщений об ошибках в веб-формах C # - PullRequest
0 голосов
/ 21 декабря 2009

Я сделал свое кодирование в консоли и использовал system.console. напишите строку почти в каждом операторе if / else, чтобы отобразить сообщение об ошибке, если введены неправильные значения, чтобы сказать, если что идет не так. Однако, когда я пытаюсь применить ту же аналогию в веб-формах, чтобы в случае выполнения условия при пользовательской ошибке пользователю на экране могло отображаться сообщение об ошибке.

Как мне отображать ошибки? Я знаю о проверке элементов, но не могу применить это, используя if и else. однако, если я использую try catch, я не знаю, какой код отображает сообщение об ошибке для пользователя. но я точно знаю, что не могу использовать SC.writelines.

образец моего кода ниже. Пожалуйста, совет .. защищенный void Login1_Authenticate (отправитель объекта, AuthenticateEventArgs e) { строка strConn; строка 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();

когда программа переходит в класс User для запуска метода verify, она делает это, выполняя следующий кусок кода ..

public 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 Ответ

1 голос
/ 21 декабря 2009

Вероятно, вы создадите список ошибок в строке и назначите их метке в форме или, возможно, тегу ul.

Я бы также рекомендовал не различать, является ли имя пользователя или пароль недействительными. Если им не удается войти в систему, вы должны просто отобразить сообщение «Не удалось войти». Если они получат правильное имя пользователя и неверный пароль, то, используя ваш метод, я узнаю, что я угадал правильное имя пользователя и мог бы для этого придумать пароли.


Кроме того, вы смотрели на встроенные элементы управления входом ASP.net и поставщиков членства? Они позаботятся обо всем этом за вас, или вы можете свернуть свой собственный, который интегрируется с поставляемыми элементами управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...