2014-10-16 56 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