2012-09-24 26 views
6

Xin chào các bạn! Tôi có một câu hỏi liên quan đến một dự án mà Im đang làm việc vào lúc này. Tôi có dòng mã này:Phiên ASP.NET và LINQ

var query = from user in dwe.UsersTable 
         where user.LoginName.Equals(usernameBox.Text) && user.Password.Equals(pwBox.Text) 
         select user; 

     if (query.Count() == 1) 
     { 
      Session["User"] = usernameBox.Text;      
      Response.Redirect("Edit.aspx"); 
     } 
     else 
     { 
      LabelError.Text = "Error try again"; 
     } 
    } 

Trong tôi "UsersTable" tôi đã một coulmn tên "UserID". Tôi muốn gửi "userID" làm phiên tới trang được chuyển hướng (Edit.aspx) userID phải bằng kết quả của sự so sánh giữa Tên người dùng và mật khẩu.

Cheers :-)

+2

[Sử dụng 'Bất kỳ' thay vì' Đếm'] (http://blogs.teamb.com/craigstuntz/2010/04/21/38598/) –

+0

Thực tiễn không tốt để lưu trữ mật khẩu của người dùng trong văn bản thuần túy trong cơ sở dữ liệu. Bạn nên xem xét băm mật khẩu của họ và lưu trữ thay vào đó. –

Trả lời

6

bạn chỉ cần viết ra

var query = (from user in dwe.UsersTable 
         where user.LoginName.Equals(usernameBox.Text) && 
         user.Password.Equals(pwBox.Text) 
         select user).FirstOrDefault(); 

if(query!=null) 
{ 
    Session["User"] = query.UserID; 
    Response.Redirect("Edit.aspx"); 
} 
else 
{ 
    LabelError.Text = "Error try again"; 
} 

Không cần phải viết donw mã bạn có mà sử dụng phương pháp Đếm thay vì điều này chỉ tận dụng FirstOrDefault sẽ cung cấp cho bạn kết quả một cách dễ dàng.

+0

Pranay Rana, Nó hoạt động nhờ rất nhiều cho câu trả lời nhanh chóng và giúp đỡ! Bạn đã dành cho tôi rất nhiều thời gian – MishMish

+0

làm cách nào để làm cho câu trả lời được chấp nhận? đây là lần đầu tiên tôi vào trang web:/ – MishMish

+0

tại sao có -1 ??? –

3
var query = from user in dwe.UsersTable 
      where user.LoginName.Equals(usernameBox.Text) 
        && user.Password.Equals(pwBox.Text) 
      select user; 

// get user from query 
// If SingleOrDefault is not supported (<4.0) use FirstOrDefault instead. 
// Thanks Tim Schmelter 
var user = query.SingleOrDefault(); 

if (user != null) 
{ 
    Session["UserID"] = user.UserID;     
    Response.Redirect("Edit.aspx"); 
} 
else 
{ 
    LabelError.Text = "Error try again"; 
} 
+0

Lưu ý rằng 'SingleOrDefault' không được hỗ trợ trong' Linq-To-Entities' 3.5, sử dụng 'FirstOrDefault' rồi. –

+0

cảm ơn rất nhiều flem, tôi đã thử cả câu trả lời của bạn và Paranay và nó hoạt động tốt ở đây! thumbs up :-) Chúc mừng – MishMish