簡體   English   中英

在 MVC 中禁用 html helper 文本框上的自動完成

[英]Disable autocomplete on html helper textbox in MVC

好的,

我會在正常的 asp.net 中使用主題來關閉整個站點上所有文本框的自動完成功能。 但是我無法在 MVC 上執行此操作,因為主題 .skin 文件中的任何內容似乎都不起作用。

我的 .skin 文件中有這個:

<asp:TextBox runat="server" autocomplete="off" />

但是這根本不會渲染,當然因為這不是 MVC 的工作方式。 無論如何,有什么辦法可以讓這種事情發揮作用。 我嘗試使用的網站太大而無法保證更改每個文本框或創建新的 HTML 幫助程序來解決問題?

有人有任何想法嗎?

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)

為答案干杯,但是這些解決方案確實需要我編輯站點中的所有表單,如果您看到我們正在使用 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 被禁用,用戶將無法使用一半的網站。

AFAIK,您不能使用 css 執行autocomplete = off ,它必須是 html 屬性,因此您無法影響所有文本框。 您可以做的一件事是將屬性添加到這樣的表單中(它將處理當前表單中的所有文本框)

Html.BeginForm(action,controller, FormMethod.Post, new { autocomplete="off"})

或者創建一個類似於BeginForm的自定義 Helper 擴展方法,在內部添加此 html 屬性。

只需將此添加到 _Layout.cshtml 文檔末尾

<script>
    $("input[type='text']").attr("autocomplete","off");
</script>

使用 autocomplete = "disable-autocomplete"

不再支持 autocomplete="off"。

而不是關閉寫任何東西@autocomplete='write-anything-instead-of-off'

@Html.TextBoxFor(model => model.FirstName, new { placeholder = "First Name", @class = "form-control", @id = "txtFirstName", @autocomplete = "new-FirstName"})
@Html.TextBox("Address","",new { @class = "classname", autocomplete = "off" })

ASP.net MVC HTML 屬性:由 JQUERY 代碼管理的 type="text"

@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>

使用以下 jQuery 代碼

 $(document).ready(function() {
    $("form,input").attr("autocomplete","off");
 });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM