关于Login控件的问题

redsmoke007 2012-03-25 12:48:14
Demo_3.aspx页面中就放了一个Login控件,如下:
  <asp:Login ID="Login1" runat="server" onauthenticate="Login1_Authenticate" 
style="text-align: center">
</asp:Login>


Demo_3.aspx.cs里面有个Login1_Authenticate事件处理程序。其中需要读Login控件的UserName和Password值。但总是报错。求教啊

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
string conStr = WebConfigurationManager.ConnectionStrings["Demo"].ConnectionString;
string sqlStr = "SELECT * FROM Admin WHERE AdminName=@Name AND AdminPwd=@Pwd";
using (SqlConnection conn = new SqlConnection(conStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sqlStr;
cmd.Parameters.AddWithValue("@Name", ((Login)sender).UserName.ToString());
cmd.Parameters.AddWithValue("@Pwd", ((Login)sender).Password.ToString());
using (SqlDataReader dr = cmd.ExecuteReader())
{
int num = 0;
while (dr.Read())
{
Session["Id"] = dr[0].ToString();
num++;
}
if (num == 0)
{
e.Authenticated = false;
}
else
{

e.Authenticated = true;
}
}
}
}
}



编译器错误消息: CS1061: “Login”不包含“UserName”的定义,并且找不到可接受类型为“Login”的第一个参数的扩展方法“UserName”(是否缺少 using 指令或程序集引用?)


源错误:



行 33: cmd.CommandText = sqlStr;
行 34:
行 35: cmd.Parameters.AddWithValue("@Name", ((Login)sender).UserName.ToString());
行 36: cmd.Parameters.AddWithValue("@Pwd", ((Login)sender).Password.ToString());
行 37:



求教啊!!!
...全文
215 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
redsmoke007 2012-03-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 chinajiyong 的回复:]
你控件的ID不是Login1吗?
这里为什么是Login?cmd.Parameters.AddWithValue("@Name", ((Login)sender).UserName.ToString());
[/Quote]
这个Login不是把sender转成Login类型吗?
EnForGrass 2012-03-25
  • 打赏
  • 举报
回复
你控件的ID不是Login1吗?
这里为什么是Login?cmd.Parameters.AddWithValue("@Name", ((Login)sender).UserName.ToString());
redsmoke007 2012-03-25
  • 打赏
  • 举报
回复
问题解决了:最后改成这样也可以编译通过。
cmd.Parameters.AddWithValue("@Pwd", ((System.Web.UI.WebControls.Login)sender).Password);

之前也已经加了System.Web.UI.WebControls的名称控件。

难道说Login类型在这里有二义性还是怎么样
redsmoke007 2012-03-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fengyarongaa 的回复:]

你想通过 Login 取username吗?
你先去跟踪一下 在监视看看 有没有
[/Quote]

一直可以监视到sender是Login类型

我不理解为什么cmd.Parameters.AddWithValue("@Name", Login1.UserName.ToString());这样就可以编译通过。
但是cmd.Parameters.AddWithValue("@Name", ((Login)sender).UserName.ToString());就编译不能通过

这两条代码不是一个意思吗?
EnForGrass 2012-03-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 redsmoke007 的回复:]

引用 1 楼 chinajiyong 的回复:
你控件的ID不是Login1吗?
这里为什么是Login?cmd.Parameters.AddWithValue("@Name", ((Login)sender).UserName.ToString());

我把代码改了下:
cmd.Parameters.AddWithValue("@Name", Login1.UserName.ToS……
[/Quote]
Login控件的用法你的好好看看
参考:http://blog.csdn.net/meng6098/article/details/6978368
porschev 2012-03-25
  • 打赏
  • 举报
回复

你的代码看上去应该也是能得到的。。不过没必要那么写吧。直接用ID.属性

cmd.Parameters.AddWithValue("@Name", ((Login)sender).UserName.ToString());
cmd.Parameters.AddWithValue("@Pwd", ((Login)sender).Password.ToString());

===================>

cmd.Parameters.AddWithValue("@Name", Login1.UserName);
cmd.Parameters.AddWithValue("@Pwd", Login1.Password);

不是什么都ToString(),它本来就是string类型的
EnForGrass 2012-03-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 redsmoke007 的回复:]

引用 1 楼 chinajiyong 的回复:
你控件的ID不是Login1吗?
这里为什么是Login?cmd.Parameters.AddWithValue("@Name", ((Login)sender).UserName.ToString());

我把代码改了下:
cmd.Parameters.AddWithValue("@Name", Login1.UserName.ToS……
[/Quote]
控件操作一般用ID号
ycproc 2012-03-25
  • 打赏
  • 举报
回复
Login1 是控件的ID

Login是控件类型
redsmoke007 2012-03-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 chinajiyong 的回复:]
你控件的ID不是Login1吗?
这里为什么是Login?cmd.Parameters.AddWithValue("@Name", ((Login)sender).UserName.ToString());
[/Quote]
我把代码改了下:
cmd.Parameters.AddWithValue("@Name", Login1.UserName.ToString());
cmd.Parameters.AddWithValue("@Pwd", Login1.Password.ToString());

现在问题解决了。但不理解原先的代码问题出现在哪里啊?
难道说sender不是Login1控件?
求高手教我。
EnForGrass 2012-03-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 redsmoke007 的回复:]

引用 1 楼 chinajiyong 的回复:
你控件的ID不是Login1吗?
这里为什么是Login?cmd.Parameters.AddWithValue("@Name", ((Login)sender).UserName.ToString());

这个Login不是把sender转成Login类型吗?
[/Quote]
我记得直接是控件ID.UserName
这样Login1.UserName
ycproc 2012-03-25
  • 打赏
  • 举报
回复
你想通过 Login 取username吗?
你先去跟踪一下 在监视看看 有没有

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧