验证多维数组是否包含一对值

时间:2013-11-20 22:48:35

标签: c# asp.net arrays multidimensional-array

我正在为网页制作一个登录表单。我创建了一个具有可接受的用户名/密码组合的多维数组。我想只有在数组中找到用户名/密码组合时才允许用户转到下一页。如果他们输入了一个在数组中找不到的组合,我想要提出错误并阻止他们继续进行下一页。

我知道这不是完成此命令的最有效方法,但我正在学习如何正确使用数组作为我的编程知识基础的一部分。我会在下面粘贴我的代码。我已经尝试了各种方式让页面做我想要的,但我似乎无法得到它。我收到此错误:“System.IndexOutOfRangeException:Index超出了数组的范围。”这是我的代码:

<%@ Page Language="C#" %>

<!DOCTYPE html>

<script runat="server">
    string[,] UserPass = new string[,] {{"user1","pwd1"}, {"user2", "pwd2"}, {"user3","pwd3"}};


void Page_Load(object sender, EventArgs e)
    {        

    }

    void btnSignin_Click(object sender, EventArgs e)
    {
         if(txtSignin.Text == UserPass[1,0] && txtPWD.Text == UserPass[0,1])
         {
             Response.Redirect("welcome.aspx");
         }

         else if (txtSignin.Text == UserPass[2, 0] && txtPWD.Text == UserPass[0, 2])
         {
             Response.Redirect("welcome.aspx");
         }

         else if (txtSignin.Text == UserPass[3, 0] && txtPWD.Text == UserPass[0, 3])
         {
             Response.Redirect("welcome.aspx");
         }

         else 
         {
             Response.Write("Please try again."); 
         }
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <link rel="stylesheet" type="text/css" href="stylesheet.css" />
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <p>Sign in with Account</p>
        <asp:Panel ID="Pnl1" runat="server">
            <br />
            <asp:Textbox ID="txtSignin" runat="server" Text="Username" style="width:190px" /><br />
            <asp:TextBox ID="txtPWD" runat="server" Text="Password" TextMode="Password" style="width:190px" /><br />
            <asp:LinkButton ID="btnSignin" runat="server" Text="Sign in" class="myBtn" OnClick="btnSignin_Click"/><br />
            <asp:CheckBox ID="chkRemember" runat="server" Text="Stay signed in" />
        </asp:Panel>
        <asp:Label ID="lblSignin" runat="server" />
    </div>
    </form>
</body>
</html>

(另外,较小的一点是,当用户点击文本框时,是否可以让登录/密码框显示消失?)

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

有不同的选择。一个是使用带有for循环的数组,另一个是使用Linq。我将向您展示如何使用数组。

   string[,] UserPass = new string[,] {{"user1","pwd1"}, {"user2.edu", "pwd2"}, {"user3","pwd3"}};
   ...
    bool isFound = false;
    for (int i=0;  i< UserPass.GetLength(0); i++)
    {
        //search users row by row
        if (UserPass[i, 0] == yourSearchUserid && UserPass[i, 1] == yourSearchPassword)
        {
            isFound = true;
            break;
        }   
    }
    //isFound holds the search result.
相关问题