1

私のlogin.aspxページで、送信ボタンをクリックすると、最初のテキストボックスの値が保持されます.2番目のテキストボックス(パスワードフィールド)が自動的にクリアされるため、ホームページに入ることができません.ウィンドウを閉じて再度開いてもボタンをクリックするとテキストボックスがクリアされるのはなぜですか? これは私のコードです: aspx ページ:

<asp:Panel ID="Panel1" runat="server" Height="251px" Style="z-index: 100; left: 349px;
            position: absolute; top: 320px" Width="415px">
            <asp:Label ID="Label1" runat="server" Style="z-index: 100; left: 126px; position: absolute;
            top: 89px" Text="USERNAME:" ForeColor="#C04000"></asp:Label>
        <asp:Label ID="Label2" runat="server" Style="z-index: 102; left: 126px; position: absolute;
            top: 136px" Text="PASSWORD:" BackColor="White" BorderColor="White" ForeColor="#C04000"></asp:Label>
            <asp:Label ID="Label3" runat="server" ForeColor="Red" Style="z-index: 105; left: 151px;
                position: absolute; top: 166px" Text="INVALID USERNAME OR PASSWORD" Visible="False"
                Width="314px"></asp:Label>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1"
                ErrorMessage="FIELD CANNOT BE EMPTY" Style="z-index: 106; left: 423px; position: absolute;
                top: 90px" Width="227px"></asp:RequiredFieldValidator>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="TextBox2"
                ErrorMessage="FIELD CANNOT BE EMPTY" Style="z-index: 107; left: 424px; position: absolute;
                top: 135px" Width="214px"></asp:RequiredFieldValidator>
            <asp:RegularExpressionValidator ID="RegularExpressionValidator4" runat="server" ControlToValidate="TextBox1"
                ErrorMessage="ENTER ONLY CHARACTERS(MIN2)" Height="1px" Style="z-index: 108; left: 415px;
                position: absolute; top: 88px" ValidationExpression="^[a-zA-Z\s]{2,15}$" Width="228px"></asp:RegularExpressionValidator>
            <asp:Label ID="Label4" runat="server" Font-Size="XX-Large" ForeColor="#8080FF" Style="z-index: 109;
                left: 204px; position: absolute; top: -62px" Text="LOGIN " Width="109px"></asp:Label>

            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <asp:TextBox ID="TextBox1" runat="server" Style="z-index: 101; left: 241px; position: absolute;
            top: 89px"></asp:TextBox>
            <asp:TextBox ID="TextBox2" runat="server" Style="z-index: 101; left: 242px; position: absolute;
            top: 132px" TextMode="Password"></asp:TextBox>
            <asp:Button ID="Button1" runat="server" Text="SUBMIT" Style="z-index: 101; left: 179px; position: absolute;
            top: 195px" onclick="Button1_Click"/>

        </asp:Panel>

aspx.cs ページ:

  protected void Page_Load(object sender, EventArgs e)
    {
        string pwd = TextBox2.Text;
        TextBox2.Attributes.Add("value", pwd);
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        try
        {
            String un = null;
            String pw = null;
            string con1 = ConfigurationManager.ConnectionStrings["con"].ConnectionString;
            OleDbConnection con = new OleDbConnection(con1);

            con.Open(); //connection must be openned
            OleDbCommand cmd = new OleDbCommand("SELECT * from admin", con); // creating query command
            OleDbDataReader reader = cmd.ExecuteReader(); // executes query
            while (reader.Read()) // if can read row from database
            {
                un = reader[0].ToString();
                pw = reader[1].ToString();
                // Get column 1 and column 3 value and print
            }
            if (un.Equals(TextBox1.Text) && (pw.Equals(TextBox2.Text)))
            {
                Response.Redirect("~/homepage.aspx");
            }
            else
            {
                Label3.Visible = true;
                TextBox1.Text = "";
                TextBox2.Text = "";
            }

        }
        catch (Exception ex)
        {
            //MessageBox.Show("error"+ex); 
        }

これをページの読み込みに追加すると:

string pwd = TextBox2.Text;
TextBox2.Attributes.Add("value", pwd);

テキストボックスの値は再調整されていると思います..しかし、ボタンクリックイベント内には入りません..

4

4 に答える 4

0
 if (un.Equals(TextBox1.Text) && (pw.Equals(TextBox2.Text)))
        {
            Response.Redirect("~/homepage.aspx");
        }

上記のコードは while ループ内にある必要があり、else 内のコードは while ループの後にある必要があります

于 2013-07-26T04:32:57.140 に答える
0

値を保持する必要がある場合は、Viewstate または Session に保存するか、フォームを送信する前の最後のステップでユーザー名とパスワードを入力します。

private string Password
{
    get
    {        
        string rv = "";
        if(ViewState["Password"] != null)
        {
            rv = ViewState["Password"].ToString();
        }
        return rv;            

    }
    set
    {
        ViewState["Password"] = value;
    }
}


//on button click
this.Password =  this.PasswordTextBox.Text
于 2013-07-26T04:34:47.770 に答える
0

これはあなたを助けるかもしれません

TextBox1.Attributes.Add("value", TextBox1.Text);
TextBox2.Attributes.Add("value", TextBox2.Text);
于 2013-07-26T04:44:52.507 に答える
0

FormsAuthentication チケットを設定しないと機能しません。

このコードを見る必要があります: http://msdn.microsoft.com/en-us/library/ka5ffkce.aspx

于 2013-07-26T04:47:04.137 に答える