当前位置:编程学习 > C#/ASP.NET >>

索引超出了数组界限

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]越界,需要先排除这个条件 --------------------编程问答--------------------
引用 3 楼 sandy945 的回复:
if(drr.Length>0)
{

}

正解! --------------------编程问答-------------------- 你看下“drr ”里面的值是什么??好好看下不就知道了嘛,索引超出界限,首先考虑是不是没有值,第二就是你循环的时候,下标是否大于集合的大小了。。。遇到问题多调试,多走几遍不就知道了嘛!!! --------------------编程问答-------------------- 使用数组 首先判断数组长度 --------------------编程问答-------------------- 设断点跟踪试试,看看变量值 --------------------编程问答-------------------- 长度判断出问题了 --------------------编程问答-------------------- Convert.IsNull()... --------------------编程问答-------------------- 小伙基础有待加强啊。。。 --------------------编程问答-------------------- try一下 --------------------编程问答-------------------- if(drr.Length<0)
{
  Response.Write("xxx");
  return;

补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,