2012-09-24 61 views
6

嗨,大家好! 我有一个关于此刻正在进行的项目的问题。 我有这行代码:ASP.NET会话和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"; 
     } 
    } 

在我的“UsersTable”我有一个coulmn命名为“用户名”。 我想将“userID”作为会话发送到重定向页面(Edit.aspx),用户ID必须等于用户名和密码之间的比较结果。

干杯:-)

+2

[使用'任何'而不是'Count'](http://blogs.teamb.com/craigstuntz/2010/04/21/38598/) –

+0

将用户的密码以明文存储在数据库。您应该考虑散列他们的密码并将其存储起来。 –

回答

6

你只需要写下

​​

无需编写donw你有代码,而不是使用这只是使FirstOrDefault使用计数方法会给你轻松的结果。

+0

Pranay Rana,它的工作非常感谢很快的答案和帮助!你为我节省了很多时间 – MishMish

+0

我如何使它成为被接受的答案?这是我第一次在网站:/ – MishMish

+0

为什么有-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

请注意''Linq-To-Entities' 3.5不支持'SingleOrDefault',那么使用'FirstOrDefault'。 –

+0

非常感谢弗洛姆,我尝试了你的答案和帕拉奈,它在这里工作得很好!竖起大拇指:-) 干杯 – MishMish