2014-10-16 38 views
0

我在.aspx页面上有asp:login控件。我正在使用LayoutTemplate。当用户输入错误的用户名或密码时,在postback上,密码字段似乎已填满。因此,如果用户只更改用户名并尝试再次登录,则会返回错误。调试我已经看到密码是空的。使用LayoutTemplate在asp:登录表单上清空密码字段

我测试了相同的行为,使用默认asp:login,没有LayoutTemplate,它运作良好。这意味着在输入错误的用户名或密码后,在postback上,密码字段显示为空。

我该如何让它工作?

编辑:

这是我使用的代码。如果出现问题并发生回发,密码字段会显示为已填充。如果用户再次点击登录,在调试模式下,我看到密码为空。

<asp:Login ID="lgLogin" runat="server" 
FailureText="Wrong data" 
TextLayout="TextOnLeft" 
OnAuthenticate="lgLogin_Authenticate" 
DestinationPageUrl="http://www.blablabla.com/" 
OnLoginError="lgLogin_Error" 
RenderOuterTable="false" 
DisplayRememberMe="False"> 
<LayoutTemplate> 
    <div class="form-group"> 
     <label for="lgLogin_UserName" class="col-md-4 control-label">Login <span class="require">*</span></label> 
     <div class="col-md-8"> 
      <div class="input-icon"> 
       <i class="fa fa-user"></i>     
       <asp:TextBox runat="server" type="text" ID="UserName" CssClass="form-control" /> 
      </div> 
     </div> 
    </div> 
    <div class="form-group"> 
     <label for="lgLogin_Password" class="col-md-4 control-label">Password <span class="require">*</span></label> 
     <div class="col-md-8"> 
      <div class="input-icon"> 
       <i class="fa fa-lock"></i> 
       <asp:TextBox runat="server" type="password" ID="Password" CssClass="form-control" /> 
      </div> 
     </div> 
    </div> 
    <div id="AvisoError" runat="server" class="alert alert-danger" visible="false"> 
     <button class="close" data-close="alert"></button> 
     <span> 
      <asp:Label ID="FailureText" runat="server" ></asp:Label> 
     </span> 
    </div> 
    <div class="form-group"> 
     <div class="col-md-offset-4 col-md-8"> 
      <asp:Button class="btn btn-primary" ID="LoginButton" runat="server" CommandName="Login" Text="Entrar" /> 
     </div> 
    </div> 
</LayoutTemplate>   
<TextBoxStyle CssClass="form-control"/> 
<LoginButtonStyle CssClass="btn btn-primary" /> 

如果我使用默认的asp:登录时,如果出现错误和回传时,密码显示为空。

<asp:Login ID="lgLogin" runat="server" 
FailureText="Wrong data" 
TextLayout="TextOnLeft" 
OnAuthenticate="lgLogin_Authenticate" 
DestinationPageUrl="http://www.blablabla.com/" 
RenderOuterTable="false" 
DisplayRememberMe="False"> 

+0

请问您可以添加代码吗?这将更容易调查。 – 2014-10-16 11:58:48

回答

1

显然,你已经设置文本框或输入ID密码字段,当发生回发会熄灭。好的做法是保持原样,让用户再输入一次,因为有这个功能存在的原因,并且即使您希望以任何方式推送它。

首先将表单的自动完成属性设置为关闭。然后在page_load中,将密码文本框值存储到某个临时变量,然后将该临时变量值推送到文本框。为了更安全,您可以将该密码字段值存储到会话中,然后使用base64对其进行加密,然后使用它。

+0

我想离开它,因为它是空的。但在屏幕上,它显示为填满。如果我使用默认登录,回发时,文本框显示为空,这是确定的。但是如果我使用LayoutTemplate,密码文本框就会显示为填充。 – Fran 2014-10-17 10:16:55

相关问题