【问题标题】:Remove browser autocompletion in MVC移除 MVC 中的浏览器自动完成功能
【发布时间】:2012-03-14 17:34:13
【问题描述】:

我目前正在尝试删除用户浏览器完成的表单自动完成,这可能会导致一些严重的行为,因为它会填充密码字段。我已经为我的所有文本框字段添加了自动完成属性,但是当我尝试使用 Firefox 时,它仍然会将我当前的登录信息加载到这些字段中。

有人知道如何解决这个问题吗?

编辑:由于不清楚,我已经添加了值设置为“off”的 aucompletion 属性。

【问题讨论】:

    标签: c# html asp.net-mvc asp.net-mvc-3 model-view-controller


    【解决方案1】:

    您可以随机化文本框的 id 和 name 属性 - 这会使浏览器自动完成功能无法正常工作。

    我的实现

    在视图中:

    <%
        var guidString = Guid.NewGuid().ToString();
    %>
    <%=Html.TextBox(guidString, String.Empty)%>
    <%=Html.Hidden("NameGuid", guidString) %>
    

    在控制器中:

    string userName = Request[model.NameGuid];
    ...
    

    【讨论】:

    • 哇,你的速度真快!我只是添加了相同的答案!
    【解决方案2】:

    如果您检查HERE,在表单上设置autocomplete="off" 应该可以解决问题。

    【讨论】:

    • 如果您检查 StackOverflow 搜索框,您会看到他们以相同的方式实现了这一目标。
    • &lt;div class="editor-field"&gt; @Html.EditorFor(model =&gt; model.HashedPassword, new { autocomplete = "off" }) @Html.ValidationMessageFor(model =&gt; model.HashedPassword) &lt;/div&gt; 我已经将自动完成属性设置为关闭,但是当我检查我的 html 源代码时,它在输入降价中没有该属性。
    • @Oflocet 您实际上应该使用autocomplete 来呈现输入或表单而不是在编辑器中。
    • 感谢您的回答 gideon !
    【解决方案3】:

    在 html 中有一个autocomplete=off 属性。

    它用于此页面右上角的搜索框,检查您将看到的 html:

    <input autocomplete=​"off" name=​"q" class=​"textbox" placeholder=​"search" ..... />
    

    查看这篇 MDN 文章:https://developer.mozilla.org/en/How_to_Turn_Off_Form_Autocompletion

    在 MVC 中,您可以在表单或文本框中实现此功能,如下所示:

    Html.BeginForm(
        action, controller, FormMethod.Post, new {autocomplete="off"})
    

    Html.TextBoxFor(model => model.EmployerNumber, new {autocomplete="off"})
    

    【讨论】:

    • 如果添加到输入中不起作用,添加到表单有时会有所帮助(看看你,IE)
    【解决方案4】:

    HTML5 有一个用于表单/输入元素的附加语法,称为 autocomplete="off"。 见http://www.w3schools.com/html5/att_form_autocomplete.asp

    【讨论】:

      猜你喜欢
      • 2019-03-31
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2013-08-18
      • 2012-02-22
      相关资源
      最近更新 更多