gpt4 book ai didi

c# - 将 textbox.text 值与 SQL Server 中的值进行比较

转载 作者:行者123 更新时间:2023-11-28 00:29:53 24 4
gpt4 key购买 nike

好的,所以我正在尝试将登录文本框密码和用户名与使用 linq 的自定义验证器进行比较,以从数据库中获取信息它总是返回 false 尽管在验证器上有人可以告诉我下面的代码哪里出错了。非常感谢...在此先感谢您...

protected void LoginValidate(object source, ServerValidateEventArgs args)
{
TiamoDataContext context = new TiamoDataContext();

var UsernameCheck = from User in context.Users
where User.Username == TextBoxLoginUsername.Text && User.Password == TextBoxLogInPassword.Text
select User.Username;

var PasswordCheck = from User in context.Users
where User.Username == TextBoxLoginUsername.Text && User.Password == TextBoxLogInPassword.Text
select User.Password;

String test1 = PasswordCheck.ToString();
String test2 = UsernameCheck.ToString();

if (test1 == TextBoxLogInPassword.Text && test2 == TextBoxLoginUsername.Text)
{
args.IsValid = true;
Session["Username"] = TextBoxLoginUsername;
Response.Redirect("UserProfile.aspx");

}
else
{
args.IsValid = false;
}

}

我不知道我哪里出错了我知道这很可能是某种愚蠢的错误而且我对此没有经验......

最佳答案

UsernameCheck 和 PasswordCheck 将成为集合,而不是单个值。因此 ToString() 方法没有返回您认为应该返回的内容。

它可能会返回 "IEnumerable<string>"

您需要强制您的 LINQ 查询返回单个结果而不是一个集合。

var user = context.Users.Where(u => u.Username==TextBoxLoginUsername.Text && 
u.Password == TextBoxLogInPassword.Text)
.FirstOrDefault();

string userNameCheck = user.Username;
string passwordCheck = user.Password;

作为旁注,这就是使用 var 的原因如果您对正在编写的语句的返回类型不是绝对肯定的,则关键字有点危险。如果你想改变你的 var s 至 string s,编译器会在编译时发现类型不匹配。

关于c# - 将 textbox.text 值与 SQL Server 中的值进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2646190/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com