MVC устанавливает значение EditorFor() по умолчанию для пустого

Я тестирую это на хроме. Я установил хром, чтобы запомнить имя пользователя и пароли. У меня есть очень простое веб-приложение MVC 5, где у меня есть экран входа в систему, а также экран для создания пользователя. Когда пользователь входит в систему, я позволяю Chrome сохранять имя пользователя и пароль.

Проблема в том, что когда я пытаюсь создать нового пользователя, его имя пользователя не является пустым, но все еще показывает имя пользователя, с которым я вошел в систему.

Я хочу сделать в поле зрения, а не через хранилище контроллера по умолчанию. Я попытался использовать приведенную ниже ссылку примера на SO, но мой код все еще не работает.

как установить значение по умолчанию HTML.EditorFor()

Вот код, который я пробовал, и он не работает.

                    <div class="form-group">
                        <div class="col-md-12">
                            @Html.LabelFor(model => model.UserName, htmlAttributes: new { @class = "control-label" })
                            <br />
                            @Html.EditorFor(model => model.UserName, new { htmlAttributes = new { @class = "form-control", @Value ="" } })
                            @Html.ValidationMessageFor(model => model.UserName, "", new { @class = "text-danger" })
                        </div>
                    </div>

Пожалуйста, посоветуйте, что мне делать, чтобы исправить это. Ты ты.


person ary    schedule 21.12.2016    source источник
comment
Мне кажется, что ваша проблема вызвана автозаполнением формы Chrome. См. Отключение автозаполнения Chrome.   -  person Georg Patscheider    schedule 21.12.2016
comment
Да, я понимаю это. Но вопросы в том, что можно сделать без отключения автозаполнения хрома?   -  person ary    schedule 21.12.2016
comment
Попробуйте установить autocomplete="new-password" (передается как htmlAttributes) для отдельного поля, для которого вы хотите запретить автозаполнение. Получил это из ссылки, которую я разместил.   -  person Georg Patscheider    schedule 21.12.2016


Ответы (1)


Самый простой способ обойти это — просто изменить имя свойства в вашей модели с UserName на NewUserName. Таким образом, автозаполнение не будет связывать записи автозаполнения между двумя разными полями. Ваша модель создания и входа в систему в любом случае отличается.

Или вы также можете попробовать изменить имя текстового поля в своем представлении.

@Html.EditorFor(m => m.UserName, new {htmlAttributes = new { @Name="NewUserName", @id="NewUserName", @class = "form-control", @Value =""}})

Вам нужно будет добавить параметр в свой контроллер для NewUserName рядом с другими параметрами вашей модели.

person Carter Medlin    schedule 21.12.2016
comment
Спасибо Картер. У меня только одна модель. У меня есть отдельные контроллеры. Но я изучу, чтобы увидеть, как я могу иметь разные модели для каждого (создать, войти в систему и т. д.) - person ary; 21.12.2016
comment
Вы также можете просто добавить отдельное свойство к той же модели. Пока имя свойства отличается, оно не будет путать автозаполнения. - person Carter Medlin; 22.12.2016
comment
Спасибо Картер. Я думал об этом. Но моя модель сгенерирована автоматически. И извините, ранее я имел в виду отдельные представления, а не отдельный контроллер. - person ary; 22.12.2016
comment
Как насчет изменения имени и идентификатора поля? Смотрите мою правку. - person Carter Medlin; 22.12.2016