C# 在MVC中的html助手文本框上禁用自动完成
嗯 在普通的asp.net中,我会使用一个主题来关闭整个网站上所有文本框的自动完成功能。但是,我不能在MVC上这样做,因为theme.skin文件中的任何内容似乎都不起作用 我的.skin文件中有以下内容:C# 在MVC中的html助手文本框上禁用自动完成,c#,asp.net-mvc,skin,C#,Asp.net Mvc,Skin,嗯 在普通的asp.net中,我会使用一个主题来关闭整个网站上所有文本框的自动完成功能。但是,我不能在MVC上这样做,因为theme.skin文件中的任何内容似乎都不起作用 我的.skin文件中有以下内容: <asp:TextBox runat="server" autocomplete="off" /> 然而,这根本不会呈现,因为MVC不是这样工作的。不管怎样,我有没有办法让这类事情发生呢。 我正在尝试的网站太大,无法保证更改每个文本框或创建一个新的HTML助手来解决这个问题
<asp:TextBox runat="server" autocomplete="off" />
然而,这根本不会呈现,因为MVC不是这样工作的。不管怎样,我有没有办法让这类事情发生呢。
我正在尝试的网站太大,无法保证更改每个文本框或创建一个新的HTML助手来解决这个问题
有人有什么想法吗?好的,你不能用css做
autocomplete=off
,它必须是一个html属性,因此你不能影响所有的文本框。可以这样做的一件事是向表单添加属性(它将处理当前表单中的所有文本框)
或者创建一个类似于在内部添加此html属性的
BeginForm
的自定义帮助程序扩展方法。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" });
}
大家为答案干杯,但是这些解决方案确实需要我编辑站点中的所有表单,如果您看到我们正在使用MVC,您会理解的 无论如何,我选择了这种方式,在母版页中我添加了以下脚本:
<script language="javascript" type="text/javascript">
$(document).ready(function () {
try {
$("input[type='text']").each(function(){
$(this).attr("autocomplete","off");
});
}
catch (e)
{ }
});
</script>
$(文档).ready(函数(){
试一试{
$(“输入[type='text']”)。每个(函数(){
$(this.attr(“自动完成”、“关闭”);
});
}
捕获(e)
{ }
});
我知道如果禁用javascript,这是毫无价值的,但老实说,如果禁用javascript,用户将无法使用一半的站点。只需将此添加到_Layout.cshtml文档末尾即可
@Html.TextBox("Address","",new { @class = "classname", autocomplete = "off" })
<script>
$("input[type='text']").attr("autocomplete","off");
</script>
$(“输入[type='text']”)attr(“自动完成”、“关闭”);
使用autocomplete=“禁用自动完成”
不再支持autocomplete=“off”。而不是off-write anything@autocomplete='write-anything-report-of-off'
@Html.TextBoxFor(model => model.FirstName, new { placeholder = "First Name", @class = "form-control", @id = "txtFirstName", @autocomplete = "new-FirstName"})
ASP.net MVC HTML属性:具有type=“text”
由JQUERY代码管理
@Html.TextBoxFor(model=>model.FirstName,新的{@id=“txtFirstName”})
$(文档).ready(函数(){
试一试{
$(“输入[type='text']”)。每个(函数(){
$(this.attr(“自动完成”、“关闭-1”);
});
}
捕获(e){}
});
使用以下jQuery代码
$(document).ready(function() {
$("form,input").attr("autocomplete","off");
});
“如果javascript被关闭”的论点在这些日子里已经站不住脚了。仍然在禁用javascript的情况下浏览web的用户是极少数。我敢打赌,不管怎么说,他们已经相当习惯于启用javascript了,否则他们在21世纪的互联网上是如何工作的?目前,我正在我的项目中使用它为我工作。请总是添加一个简短的解释
@Html.TextBoxFor(model => model.FirstName, new { placeholder = "First Name", @class = "form-control", @id = "txtFirstName", @autocomplete = "new-FirstName"})
@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>
$(document).ready(function() {
$("form,input").attr("autocomplete","off");
});