我的网站上有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文本属性为空。
如果您还有其他需要,请告诉我。
答案 0 :(得分:2)
尝试移动更新面板,使其包含您尝试回发的文本框。
当您使用更新面板时,通常会定义要在其中发布的元素。
答案 1 :(得分:1)
没有代码就很难猜到,但无论如何这里有一对:
答案 2 :(得分:0)
文本框是否具有runat =“server”属性?
编辑: 如果您将登录按钮放在updatepanel之外,它是否有效?