ASP.NET中回发的奇怪行为

时间:2010-03-26 16:11:28

标签: c# asp.net postback

我正在使用登录表单的网站上工作。要登录,回发将用于代码隐藏中的OnClick处理程序 不知何故,从用户名和密码文本框的Text-property返回的值是我输入的值的十倍,用逗号分隔。我检查了我的整个代码是否有双ID(这似乎是导致此行为的最常见问题),但我发现每个ID只定义一次。

在ASPX文件中,我有这个:

<asp:Label ID="lblFeedback" ForeColor="Red" Font-Bold="true" runat="server" Visible="false" /><br />
        <asp:Panel ID="pnlLogin" runat="server">
            <table style="border-style: none;">
                <tr>
                    <td>
                        <asp:Label ID="lblUsername" AssociatedControlID="txtUsername" runat="server" />
                    </td>
                    <td>
                        <asp:TextBox ID="txtUsername" runat="server" /><br />
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Label ID="lblPassword" AssociatedControlID="txtPassword" runat="server" />
                    </td>
                    <td>
                        <asp:TextBox ID="txtPassword" runat="server" TextMode="password" /><br />
                    </td>
                </tr>
                <tr>
                    <td>
                    </td>
                    <td>
                        <asp:Button ID="btnLogin" OnClick="btnLogin_Click" runat="server" />
                    </td>
                </tr>
            </table>
        </asp:Panel>

Codebehind中的OnClick处理程序:

protected void btnLogin_Click(object sender, EventArgs e)
    {
        string username = Util.Escape(txtUsername.Text);
        string password = Util.Escape(txtPassword.Text);

        WebsiteUser user = WebsiteUser.Create(username, password);
        if (user != null)
        {
            //Set some session variables and redirect to user profile
        }
        else
        {
            lblFeedback.Text = Localizer.Translate("INVALID_LOGIN");
            lblFeedback.ForeColor = Color.Red;
            lblFeedback.Visible = true;
            pnlLogin.Visible = true;
        }
    }

该网站在ISS 5.1(Win XP Pro)上的ASP.NET 2.0上运行

1 个答案:

答案 0 :(得分:0)

代码看起来都还可以。我会考虑的一些事情是你的Util.Escape函数。如果您担心恶意入侵,可以使用HttpServerUtility.HtmlDecode。你也可以使用asp:login控件,因为它提供了你感兴趣的所有功能。