确定,
我会在普通的asp.net中使用主题来关闭整个网站上所有文本框的自动完成功能。但是我无法在MVC上执行此操作,因为主题.skin文件中的任何内容似乎都无效。
我的.skin文件中有这个:
<asp:TextBox runat="server" autocomplete="off" />
然而,这根本不会呈现,当然因为这不是MVC的工作方式。无论如何,我有什么方法可以让这种事情发挥作用。 我试图这样做的网站太大,无法保证更改每个文本框或创建新的HTML帮助程序来解决问题?
有人有任何想法吗?
答案 0 :(得分:24)
MVC没有普通旧ASP.NET之类的服务器控件。因此,您的控件上没有进行任何服务器处理。它们将完全按照您键入的方式呈现给客户端。主题不是你将在MVC中使用的东西,因为它们适用于ASP.NET服务器控件,你不会在这里使用它们。也就是说,HTML渲染器在渲染视图时会被服务器处理。您需要使用html属性重载将autocomplete =“off”添加到实际的HTML控件。
@Html.TextBoxFor(x => x.Something, new { autocomplete="off" } )
或者在asp.net服务器控件中设置autocomplete =“off”时呈现的实际HTML属性。
编辑:影响所有文本框的一个选项是创建自己的Html帮助程序方法。只需创建一个扩展方法,就像这样:
using System.Web.Mvc;
using System.Web.Mvc.Html;
public static MvcHtmlString NoAutoCompleteTextBoxFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression)
{
return html.TextBoxFor(expression, new { autocomplete="off" });
}
然后你可以这样做:
Html.NoAutoCompleteTextBoxFor(x => x.Something)
答案 1 :(得分:12)
为答案人干杯,但是那些解决方案真的需要我编辑网站中的所有表格,如果你看到我们正在使用的MVC,你就会理解。
无论如何我选择了这种方式,在母版页中添加了这个脚本:
<script language="javascript" type="text/javascript">
$(document).ready(function () {
try {
$("input[type='text']").each(function(){
$(this).attr("autocomplete","off");
});
}
catch (e)
{ }
});
</script>
我知道如果javascript被禁用,这是毫无价值的,但说实话,如果javascript被禁用,用户将无法使用一半的网站。
答案 2 :(得分:9)
AFAIK,您不能使用css autocomplete = off
并且它必须是html属性,因此没有任何东西可以影响所有文本框。您可以做的一件事是将属性添加到表单中(它将解决当前表单中的所有文本框)
Html.BeginForm(action,controller, FormMethod.Post, new { autocomplete="off"})
或创建一个类似于BeginForm
的自定义Helper扩展方法,该方法在内部添加此html属性。
答案 3 :(得分:1)
只需将其添加到_Layout.cshtml文档结尾
即可<script>
$("input[type='text']").attr("autocomplete","off");
</script>
答案 4 :(得分:1)
使用autocomplete =“ disable-autocomplete”
不再支持自动完成=“关闭”。
答案 5 :(得分:0)
@Html.TextBox("Address","",new { @class = "classname", autocomplete = "off" })
答案 6 :(得分:0)
不是注销任何东西,而是@ autocomplete ='write-anything-instead-of-off'
@Html.TextBoxFor(model => model.FirstName, new { placeholder = "First Name", @class = "form-control", @id = "txtFirstName", @autocomplete = "new-FirstName"})
答案 7 :(得分:0)
ASP.net MVC HTML属性:具有type =“ text” 由JQUERY代码管理
@Html.TextBoxFor(model => model.FirstName, new {@id = "txtFirstName"})
<script language="javascript" type="text/javascript">
$(document).ready(function () {
try {
$("input[type='text']").each(function () {
$(this).attr("autocomplete", "off-1");
});
}
catch (e) { }
});
</script>
答案 8 :(得分:0)
使用以下jQuery代码
$(document).ready(function() {
$("form,input").attr("autocomplete","off");
});