2017-02-18 9 views
0

Я пытаюсь изучить кодировку MVC, но у меня есть последняя небольшая проблема. Первый вход не работает, но второй логин - это работа. Это каждый раз работает так.Первый логин не работает, но второй логин - это работа

Мои коды контроллера:

public ActionResult Login() 
    { 
     if (Session["UserID"] != null) 
     { 
      Response.Redirect("/Home/Index"); 
     } 
     return View(); 
    } 

[HttpPost] 
public ActionResult Login(string txtUsername, string txtPassword) 
    {    
     Customer loggedInUser = db.Customers.Where(x=> x.Username == txtUsername && x.Password == txtPassword).FirstOrDefault(); 
     if (loggedInUser == null) 
     { 
      Response.Write("<script>alert('Please check your username and password.')</script>"); 
      return View(); 
     } 
     else 
     {     
      Session["UserID"] = loggedInUser.ID; 
      Response.Redirect("/Home/Index"); 
      return View(); 
     }      
    } 

Я с помощью этой сессии [ "UserID"] на указательный странице, чтобы понять, что я вошел в

указательного Посмотреть коды:.

@section Login{ 

    @if (Session["UserID"] == null) 
    { 
     <li><a href="/Home/Login"><span class="glyphicon glyphicon-log-in"> </span> &nbsp Log In</a></li> 
     <li><a href="/Home/Register"><span class="glyphicon glyphicon-plus"> </span> Create an Account</a></li> 
    } 
    else 
    {  
     int userID = (int)Session["UserID"]; 
     <li><a href="/Home/UserDetail/@userID"><span class="glyphicon glyphicon-user"> </span> User Detail</a></li> 
     <li><a href="/Home/Orders"><span class="glyphicon glyphicon-gift"> </span> &nbsp Orders</a></li> 
     <li><a href="/Home/LogOut"><span class="glyphicon glyphicon-log-out"> </span> &nbsp Log Out</a></li> 
    } 
} 

Я исследую это с точкой останова на VS. В первой попытке входа в систему Session ["UserID"] заполняется на контроллере, но Session ["UserID"] выглядит как null на странице Index View при первой попытке входа в систему. Я даю вторую попытку, и на этот раз Session ["UserID"] не отображается на странице Index View.

Спасибо за помощь и так жаль мой плохой английский.

ответ

0

ОК, я решил проблему таким образом

[HttpPost] 
public ActionResult Login(string txtUsername, string txtPassword) 
    {    
     Customer loggedInUser = db.Customers.Where(x=> x.Username == txtUsername && x.Password == txtPassword).FirstOrDefault(); 
     if (loggedInUser == null) 
     { 
      Response.Write("<script>alert('Please check your username and password.')</script>"); 
      return View(); 
     } 
     else 
     {     
      Session["UserID"] = loggedInUser.ID; 
      //Response.Redirect("/Home/Index"); that's not good way 
      return Redirect("/Home/Index"); //this is the good way 
     }      
    } 
Смежные вопросы