2016-08-31 4 views
1

Я попробовал этот кодпоказать сообщение, когда неправильно Войти

Когда я войти в систему с неправильным именем пользователя и паролем, то он перенаправляет на webform2.aspx где я хочу, чтобы показать сообщение Неправильный логин и пароль

как я сделай это ?

я пытаюсь ниже код, но он не работает

protected void Button1_Click(object sender, EventArgs e) 
    { 
     if(loginmethod(txt_us.Text,txt_pwd.Text)!="NA") 
     { 
      FormsAuthentication.Initialize(); 
      String strRole =Assignroles(txt_us.Text); 
      FormsAuthenticationTicket fat = new FormsAuthenticationTicket(1, txt_us.Text, DateTime.Now, DateTime.Now.AddMinutes(30), false, strRole, FormsAuthentication.FormsCookiePath); 
      Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, 
      FormsAuthentication.Encrypt(fat))); 
      loginmethod(txt_us.Text, txt_pwd.Text); 
      Response.Redirect("WebForm2.aspx"); 
     } 
     else 
     { 
      Label1.Text = ("Incorrect UserName/Password"); 
      Label1.Visible = true; 
     } 
     txt_us.Text = ""; 
     txt_pwd.Text = ""; 
    } 
    private string loginmethod(string UserName, string Password) 
    { 
     try 
     { 
      login_class lg_class = new login_class(); 
      Entities2 login = new Entities2(); 
      string logn = Convert.ToString(lg_class.loginfu(UserName, Password).Rows[0]["id"]); 
      Session["ID"] = logn.ToString(); 
      return (logn); 
     } 
     catch (Exception ex) 
     { 

      return (ex.Message.ToString()); 

     } 

    } 

метод loginfu

public DataTable loginfunction(string username,string password) 
     { 
      try 
      { 
       Entities2 lg = new Entities2(); 
       List<SP_GetLogin_Result> gr = lg.SP_GetLogin(username, password).ToList(); 
       DataTable dt = new DataTable(); 
       dt.Columns.Add("id", typeof(string)); 
       foreach (var l in gr) 
       { 
        dt.Rows.Add(l.id); 
       } 
       return dt; 
      } 

      catch (Exception) 
      { 
       throw new Exception(); 

      } 

     } 

UPDATE

я это сделать, но это показать ошибку

Entities2 lg = new Entities2(); 
     DataTable dt = new DataTable(); 
     dt=lg.SP_GetLogin(username,password).ToList(); 
     if (dt.Rows.Count== 0) 
     { 
      return "NA"; 
     } 
     else 
     { 
      return dt.Rows[0].ID.ToString(); 
     } 

«System.Data.DataRow» не содержит определения для «ID», и не может быть найден идентификатор «ID» расширения, принимающий первый аргумент типа «System.Data.DataRow» (вам не хватает директивы using или ссылка на сборку?)

не удается неявно преобразовать тип 'строка' в '' System.Data.DataTable

'System.Collections.Generic.List' до 'System.Data.DataTable'

+0

Debug и проверить, что loginmethod вернуться, когда вы вводите неверный логин и пароль. –

+0

Исключение происходит при улове метода входа. Нет строки в позиции 0. @HrkPatel – user6628729

+0

, пожалуйста, покажите нам ваш метод loginfu. Или вы можете проверить, не будет ли строка после этого метода возвращать «NA» –

ответ

0

Заменить

Entities2 lg = new Entities2(); 
       List<SP_GetLogin_Result> gr = lg.SP_GetLogin(username, password).ToList(); 
       DataTable dt = new DataTable(); 
       dt.Columns.Add("id", typeof(string)); 
       foreach (var l in gr) 
       { 
        dt.Rows.Add(l.id); 


      } 

по

Entities2 lg = new Entities2(); 
    DataTable dt = new DataTable(); 
    dt = lg.SP_GetLogin(username, password); 
    if(dt.rows.count == 0) 
    { 
    return "NA"; 
    } 
    else 
    { 
    return dt.rows[0].something. tostring(); 
    } 

попробовать этот

+0

, но в этом как я выполняю цикл foreach и эту ошибку show ... Я пытаюсь использовать этот DataTable dt = новый DataTable(); dt = w.SP_GetLogin (имя пользователя, пароль); if (dt.Rows.Count == 0) { возвращение "NA"; } else { return dt.Rows [0]. Таблицы [0] ["id"]; } – user6628729

+0

что-нибудь? – user6628729

+0

что-то означает, что вы возвращаетесь из базы данных –

Смежные вопросы