移除 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"
应该可以解决问题。
【讨论】:
如果您检查 *** 搜索框,您会看到他们以相同的方式实现了这一目标。<div class="editor-field"> @Html.EditorFor(model => model.HashedPassword, new autocomplete = "off" ) @Html.ValidationMessageFor(model => model.HashedPassword) </div>
我已经将自动完成属性设置为关闭,但是当我检查我的 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 中的浏览器自动完成功能的主要内容,如果未能解决你的问题,请参考以下文章