Подтвердить что ты не робот

Как отключить автозаполнение в MVC Html Helper

У меня типичная форма ADO.NET EF, которая позволяет пользователю вводить дату. Я поставил jQuery datepicker на него, но когда пользователь переходит к выбору даты, браузер показывает некоторые другие записи в выпадающем списке. Как отключить это раскрывающееся меню? В традиционном ASP.NET я бы поставил autocomplete = "off". Не уверен в эквиваленте MVC.

<div class="editor-field">
    <%= Html.TextBoxFor(model => model.date, new { @class = "aDatePicker" })%>
    <%= Html.ValidationMessageFor(model => model.date) %>
</div> 
4b9b3361

Ответ 1

Попробуйте следующее:

<%= Html.TextBoxFor(
    model => model.date, 
    new { @class = "aDatePicker", autocomplete = "off" }
)%>

Он создаст разметку, близкую к следующему:

<input type="text" id="date" name="date" class="aDatePicker" autocomplete="off" />

Ответ 2

Несколько пунктов

  • Если вы более или менее уже написали сайт, и вы не хотите возвращаться и изменять весь свой cshtml, чтобы отключить автозаполнение (нам пришлось бы вернуться и изменить сотни строк кода в течение сайт), вы можете отключить его с помощью Javascript с готовым обработчиком, например:

    //Disable autocomplete throughout the site
    $(document).ready(function() {
        $("input:text,form").attr("autocomplete","off");
    })
    
  • Из того, что я прочитал, вам нужно отключить его как на уровне формы, так и на уровне текстового поля, чтобы он работал на всех версиях Firefox и IE.

Ответ 3

Я использовал Дарина выше и успешно применил его к демо:

    @model RequestAQuote.Models.RequestAQuoteModel
    @{
        ViewBag.Title = "Request a Free Quote";
        List<string> ProjectTypes = new List<string>();
        ProjectTypes.Add("Electrical Wiring");
        ProjectTypes.Add("Install Breakers");
        ProjectTypes.Add("Ceiling Fan");
        ProjectTypes.Add("Replace Light");
        ProjectTypes.Add("Replace Outlet");    
    }

    <h2>Request A Quote</h2>
    @using (Html.BeginForm())
    {
        @Html.ValidationSummary()
        <fieldset>
            <legend>Request a Quote Form</legend>
            <ol>
                <li>
                    @Html.LabelFor(m => m.ProjectType)
                    @Html.DropDownListFor(m => m.ProjectType, new MultiSelectList(ProjectTypes))
                </li>
                <li>
                    @Html.LabelFor(m => m.ContactName)
                    @Html.EditorFor(m => m.ContactName, new { autocomplete = "off" })
                </li>
                <li>
                    @Html.LabelFor(m => m.DaTimePhone)
                    @Html.EditorFor(m => m.DaTimePhone, new { autocomplete = "off" })
                </li>
                <li>
                    @Html.LabelFor(m => m.Email)
                    @Html.EditorFor(m => m.Email, new { autocomplete = "off" })
                </li>
                <li>
                    @Html.LabelFor(m => m.ProjectDescription)
                    @Html.EditorFor(m => m.ProjectDescription, new { autocomplete = "off" })
                </li>
            </ol>
            <input type="submit" value="Request Quote" />
        </fieldset>
    }

    @section scripts 
    {
        @Scripts.Render("~/bundles/jqueryval")
    }

    }