Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在MVC中的html助手文本框上禁用自动完成_C#_Asp.net Mvc_Skin - Fatal编程技术网

C# 在MVC中的html助手文本框上禁用自动完成

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.net中,我会使用一个主题来关闭整个网站上所有文本框的自动完成功能。但是,我不能在MVC上这样做,因为theme.skin文件中的任何内容似乎都不起作用

我的.skin文件中有以下内容:

<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");
 });