如何解决C#-在此上下文中仅支持原始类型或枚举类型
我试图使登录页面连接到sql server,但是每当输入用户名和密码时,下一行代码
var user = db.Admins.Where(a => a.username.Equals(usertext)).SingleOrDefault();
引发下一个异常:
System.NotSupportedException:'无法创建常数 键入“ System.Windows.Forms.TextBox”。仅原始类型或 在此上下文中支持枚举类型。'
我应该如何解决?
AirlineEntities db = new AirlineEntities();
if (usertext.Text != string.Empty && passtext.Text != string.Empty)
{
var user = db.Admins.Where(a => a.username.Equals(usertext)).SingleOrDefault();
if (user != null)
{
user.password.Equals(passtext);
MessageBox.Show("Login successful");
}
else
{
MessageBox.Show("Incorrect password");
}
}
else
{
MessageBox.Show("Enter Username and Password please");
}
解决方法
您正在尝试将用户名与TextBox
进行比较。您想将其与字符串进行比较,因此几乎可以肯定,您想再次使用Text
属性。此外,您当前正在呼叫Equals
作为密码,但是忽略了结果。我怀疑您想要类似的东西:
if (usertext.Text != string.Empty && passtext.Text != string.Empty)
{
var user = db.Admins.Where(a => a.username.Equals(usertext.Text)).SingleOrDefault();
if (user != null && user.password.Equals(passtext.Text))
{
MessageBox.Show("Login successful");
}
else
{
// Note: message updated because we don't know whether the user
// wasn't found,or they didn't have the right password
MessageBox.Show("Incorrect user name or password");
}
}
或更简单:
string user = usertext.Text;
string password = passtest.Text;
if (user != "" && password != "")
{
var userEntity = db.Admins.SingleOrDefault(a => a.username == user);
if (userEntity is object && userEntity.password == password)
{
MessageBox.Show("Login successful");
}
else
{
MessageBox.Show("Incorrect user name or password");
}
}
还请注意,您似乎以纯文本形式存储密码,这非常安全性较弱。我强烈建议您使用开箱即用的身份系统,而不是像这样滚动自己的身份。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。