索引超出了数组界限
System.IndexOutOfRangeException: 索引超出了数组界限。 在 _Default.txtDenglu_Click(Object sender, EventArgs e) 位置 d:\用户目录\Documents\Visual Studio 2010\WebSites\登陆练习\Default.aspx.cs:行号 48为什么txtUid.Text输入有误报错 ,只有txtPwd.Text输入有误时不报错?望指教
代码:
DataSet s = (DataSet)ViewState["myUser"];
string name = txtUid.Text;
DataRow[] drr = s.Tables["myUser"].Select("uidname='" + name + "'");
try
{
if (txtUid.Text == drr[0][0].ToString() ) // 错误出现在这句
{
if (txtPwd.Text == drr[0][1].ToString())
{
//Response.Redirect("welcom.aspx?name=" + txtname.Text.Trim() + "&xingming=" + txtxingming.Text.Trim());
Response.Redirect("welcome.aspx");
}
else
{
lbCuowu.Text = "密码错误!";
txtPwd.Text = "";
}
}
else
{
lbCuowu.Text = "用户名或密码错误!";
txtPwd.Text = "";
txtUid.Text = "";
}
}
catch (Exception message)
{
lbCuowu.Text = message.ToString();
}
if (chkCookie.Checked == true)
{
HttpCookie cookie = new HttpCookie("uidname");
cookie.Value = txtUid.Text;
cookie.Expires = DateTime.Now.AddDays(15);
Response.Cookies.Add(cookie);
} --------------------编程问答-------------------- debug一下drr[0][0]是否是null --------------------编程问答-------------------- 很明显,drr得到的是一个长度为0的数组。 --------------------编程问答-------------------- if(drr.Length>0)
{
} --------------------编程问答-------------------- try进入加个判断:
if(drr.Length==0)
//用户名或密码错误 --------------------编程问答-------------------- if(drr.Length<0)
{
Response.Write("xxx");
return;
} --------------------编程问答-------------------- if(drr.Length<0)
return; --------------------编程问答-------------------- txtUid.Text输入有误报错时候drr.Length==0所有drr[0]越界,需要先排除这个条件 --------------------编程问答--------------------
正解! --------------------编程问答-------------------- 你看下“drr ”里面的值是什么??好好看下不就知道了嘛,索引超出界限,首先考虑是不是没有值,第二就是你循环的时候,下标是否大于集合的大小了。。。遇到问题多调试,多走几遍不就知道了嘛!!! --------------------编程问答-------------------- 使用数组 首先判断数组长度 --------------------编程问答-------------------- 设断点跟踪试试,看看变量值 --------------------编程问答-------------------- 长度判断出问题了 --------------------编程问答-------------------- Convert.IsNull()... --------------------编程问答-------------------- 小伙基础有待加强啊。。。 --------------------编程问答-------------------- try一下 --------------------编程问答-------------------- if(drr.Length<0)
{
Response.Write("xxx");
return;
}
补充:.NET技术 , ASP.NET