在代码中访问时,MasterPage文本框为空

时间:2009-07-25 00:17:03

标签: asp.net textbox master-pages

我的网站上有MasterPage和一些内容页面。 MasterPage包含一个div,当用户单击同时位于MasterPage上的“登录”链接时,我会弹出该div。此登录表单有两个文本框,一个用于用户名,另一个用于密码,当用户提交表单时,应对其进行身份验证,并在会话中插入用户信息。所有要处理的代码都位于MasterPage代码后面。

问题出现了:当MasterPage点击事件从文本框中获取要在身份验证方法中使用的文本时,代码会将文本视为空!!!

我错过了什么?

以下是位于母版页上的按钮点击代码和表单:

ButtonClick:

bool IsUserAuthenticated = false;
        string userName = txtUserName.Text;
        string password = txtPassword.Text;

        IsUserAuthenticated = masterDataManager.AuthenticateUser(userName, password);

        if (IsUserAuthenticated)
        {
            Session.Add("UserName", userName);
            lblCurrentUserName.Text = "You are logged in as: " + userName;

            string script = "<script type=\"text/javascri\">$('#dialogBox').dialog('close');</script>";

            if (Page.ClientScript.IsStartupScriptRegistered("closeDialog"))
            {
                Page.RegisterStartupScript("closeDialog", script);
            }
        }
        else
        {
            lblLoginError.Text = "Username/Password combination does not exist in the database. Please try again.";
        }

这是Div:

<div id="dialogBox" title="Log In">
            <table align="center" style="margin-top: 5px; width: 100%" cellpadding="5" cellspacing="5">
                <tr>
                    <td colspan="2">
                        <asp:Label ID="lblLoginError" runat="server" Text="" CssClass="errorText"></asp:Label>
                    </td>
                </tr>
                <tr>
                    <td class="dialogText">
                        <asp:Label ID="lblUserName" runat="server" Text="User Name: " ForeColor="#c3c003"></asp:Label>
                    </td>
                    <td class="dialogInput">
                        <asp:TextBox ID="txtUserName" runat="server" BackColor="Black" ForeColor="#c3c003" Width="210px"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td class="dialogText">
                        <asp:Label ID="lblPassword" runat="server" Text="Password: " ForeColor="#c3c003"></asp:Label>
                    </td>
                    <td class="dialogInput">
                        <asp:TextBox ID="txtPassword" runat="server" TextMode="Password" BackColor="Black" ForeColor="#c3c003" Width="210px"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td class="dialogInput" colspan="2">
            <asp:UpdatePanel runat="server" ID="testupdatepanel">
            <ContentTemplate>
                        <asp:ImageButton ID="btnLogin" runat="server" ImageUrl="~/images/loginout.png" ImageAlign="Right" style="padding-top: 15px;" onclick="btnLogin_Click" />
                        <asp:ImageButton ID="btnCancel" runat="server" ImageUrl="~/images/cancelout.png" ImageAlign="Right" style="padding-top: 15px;" />
            </ContentTemplate>
            </asp:UpdatePanel>
                    </td>
                </tr>
            </table>
        </div>

虽然框中有文字,但txtUserName和txtPassword文本属性为空。

如果您还有其他需要,请告诉我。

3 个答案:

答案 0 :(得分:2)

尝试移动更新面板,使其包含您尝试回发的文本框。

当您使用更新面板时,通常会定义要在其中发布的元素。

答案 1 :(得分:1)

没有代码就很难猜到,但无论如何这里有一对:

  • 检查页面中的哪一点 您尝试访问的生命周期 文本框内容。
  • 检查您是否以任何方式重置文本框。

答案 2 :(得分:0)

文本框是否具有runat =“server”属性?

编辑: 如果您将登录按钮放在updatepanel之外,它是否有效?