C# 使用LayoutTemplate的asp:login表单上的空密码字段

C# 使用LayoutTemplate的asp:login表单上的空密码字段,c#,asp.net,login,C#,Asp.net,Login,我在.aspx页面上有一个asp:login控件。我正在使用布局模板。当用户输入错误的用户名或密码时,在postback上,密码字段似乎已填充。因此,如果用户只更改用户名并再次尝试登录,则返回一个错误。调试我看到密码是空的 我使用默认的asp:login,而不使用LayoutTemplate,测试了相同的行为,效果很好。这意味着在输入错误的用户名或密码后,在回发时,密码字段显示为空 <asp:Login ID="lgLogin" runat="server" FailureText="Wr

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

我使用默认的
asp:login
,而不使用
LayoutTemplate
,测试了相同的行为,效果很好。这意味着在输入错误的用户名或密码后,在
回发
时,密码字段显示为空

<asp:Login ID="lgLogin" runat="server"
FailureText="Wrong data"
TextLayout="TextOnLeft" 
OnAuthenticate="lgLogin_Authenticate" 
DestinationPageUrl="http://www.blablabla.com/"
RenderOuterTable="false"
DisplayRememberMe="False">
我怎样才能让它工作

编辑:

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

<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:login,如果出现错误并发生回发,密码将显示为空

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


显然,您已经将文本框或输入id设置为密码字段,当回发发生时,它将关闭。好的做法是让它保持原样,让用户再输入一次,因为这个功能存在是有原因的,即使您当时想推动它


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

您需要在上添加一个属性,以便在回发后保留控件的状态。

更改加载页上字段的类型事件完成,对我有效:

$(document).ready(function () {            
        document.getElementById("textBoxSenha").type = "password";
    });

你能添加代码吗?调查起来会容易些。我想保持原样,那是空的。但在屏幕上,它显示为已填充。如果我使用默认登录,在回发时,文本框显示为空,这是正常的。但如果我使用LayoutTemplate,则密码文本框会在填充时显示。