移除 MVC 中的浏览器自动完成功能

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案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" 应该可以解决问题。

【讨论】:

如果您检查 *** 搜索框,您会看到他们以相同的方式实现了这一目标。 &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

【讨论】:

以上是关于移除 MVC 中的浏览器自动完成功能的主要内容,如果未能解决你的问题,请参考以下文章

MVC模式窗口中的jQuery UI自动完成

在mvc中回发后自动完成功能不起作用

MVC5 创建带有自动完成功能的组合框

如何在.net core mvc的搜索框中实现自动完成功能?

MVC5中的自动完成下拉菜单?

WINdows10/Chrome 中的 Jquery 自动完成功能