10

有没有办法使用autocomplete="off"in <asp:Login> </asp:login>. 我试图将 asp:login 转换为模板并将 autocomplete="off" 属性放在 asp:TextBox 元素中,但这会破坏登录过程的其他部分。有没有一种方法可以在不使用 javascript 且不转换为模板的情况下禁用自动完成功能。如果它可能在代码后面是好的。期待您的建议。谢谢

这是 Page_Load 中的代码

  if (!Page.IsPostBack)
    {
        var control = this.FindControlRecursive(LoginArea, "UserName") as TextBox;

        if (control != null)
        {
            control.Attributes.Add("autocomplete", "off");
        }

        var control2 = this.FindControlRecursive(LoginArea, "Password") as TextBox;

        if (control2 != null)
        {
            control2.Attributes.Add("autocomplete", "off");
        }
    } 

这里是aspx页面:

<asp:Login ID="LoginArea" runat="server" SkinID="Login" CssSelectorClass="PrettyLogin"
                   DestinationPageUrl="Home.aspx" LoginButtonImageUrl="" 
                   LoginButtonText="login button"
                   LoginButtonType="Button" 
                   UserNameLabelText="username>" 
                   PasswordLabelText="password"
                   TitleText="title" 
                   RememberMeSet="false" DisplayRememberMe="false" 
                   FailureText="failed"
                   ToolTip="tool tip"
                   PasswordRecoveryText="" 
                   PasswordRecoveryUrl="urlforpasswordrecovery"
                   CreateUserText="" 
                   CreateUserUrl="" OnLoggedIn="LogOn_LoggedIn"
                   OnLoggingIn="LogOn_LoggingIn" OnLoginError="LogOn_Error" >
        </asp:Login>
4

3 回答 3

11

要关闭整个表单的自动完成功能,您只需在表单标签中添加一个属性,如下所示:

<form id="Form1" method="post" runat="server" autocomplete="off">

很容易。现在您不会在表单上的任何控件上获得自动完成功能,适用于任何支持自动完成的浏览器。HTML INPUT 标记还支持使用 autocomplete=off 并且由于控件呈现为 INPUT 标记,因此您可以使用它在逐个控件的基础上对其进行设置。只需在设计时将其添加到 TextBox (但请注意,VS.NET 会在它下划线并用波浪线表示文本框没有自动完成属性 - 但它仍然可以工作):

<asp:TextBox Runat="server" ID="Textbox1" autocomplete="off"></asp:TextBox>

或在运行时:

Textbox1.Attributes.Add("autocomplete", "off");
于 2013-10-23T10:04:34.463 回答
3

尝试这个:

.aspx

<asp:Login runat="server" ID="login"></asp:Login>

背后的代码

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        var control = FindControlRecursive(login, "Password") as TextBox;

        control.Attributes.Add("autocomplete", "off");
    }
}
public Control FindControlRecursive(Control root, string id)
{
    Control first = null;
    foreach (Control c in root.Controls)
    {
     Control t = FindControlRecursive(c, id);
     if (t != null)
     {
        first = t;
        break;
      }
   }
   return root.ID == id ? root : first;
}

这是密码字段的示例。对于用户名,FindControlRecursive方法的第二个参数使用“UserName”而不是“Password”。

于 2013-10-23T10:07:30.510 回答
2

请按照以下步骤操作

  1. 以设计模式打开登录网页
  2. 选择登录控件并单击 > 并选择转换为模板(如果用户名和密码文本框不可见)。
  3. 选择登录文本框并按 F4 显示属性窗口并设置 AutoCompleteType="Disabled" 同样为密码。见附图。在此处输入图像描述
于 2018-08-07T09:46:46.477 回答