У меня есть проект, который содержит простую форму для сбора информации о регистрации. Недавно я работал над добавлением локализации в проект, так как весь текст, показываемый пользователю, был жестко запрограммирован. Я не уверен, что изменилось, но по какой-то причине теперь, когда Razor отображает элемент HTML с помощью метода Html.EditorFor, который в конечном итоге становится текстовым полем, к свойству Name элемента добавляется «.textbox».
Это нарушает привязки, поэтому, когда я получаю свою модель, все текстовые значения равны нулю. Вот пример того, что я вижу, код Razor:
<div class="form-group" ng-class="{ 'has-error': validate && accountForm.FirstName.$invalid }">
@Html.LabelFor(m => m.FirstName, new { @class = @ViewBag.LabelCssRequired })
<div class="@ViewBag.TextboxCss">
@Html.EditorFor(m => m.FirstName, new { htmlAttributes = new { ng_model = "firstName" } })
</div>
</div>
и вот визуализированный вывод:
<input class="text-box single-line form-control ng-valid-maxlength ng-not-empty ng-dirty ng-valid-parse ng-valid ng-valid-required ng-touched" id="FirstName_textbox" maxlength="100" name="FirstName.textbox" ng-model="firstName" required="required" type="text" value="">
Он также добавляет «_textbox» к идентификатору, но в данный момент меня это не беспокоит. По какой-то причине это происходит только с элементами ввода, у которых тип «текст». У меня есть другой ввод, сгенерированный с помощью .EditorFor, который имеет тип электронной почты и не имеет никаких изменений имени.
Это поведение также, по-видимому, ограничено Html.EditorFor, если я использую.TextboxFor, оно работает нормально.
Мне удалось заставить работать привязки, явно установив свойство @Name в Razor, но это только маскирует симптом, и я хотел бы избежать необходимости делать это для каждого ввода текста на сайте.
Кто-нибудь видел это поведение раньше или знает об исправлении?
project root\views\shared\editortemplates
? Я уверен, что этого не должно происходить, и мошеннический шаблон редактора объяснил бы такое поведение. - person Balázs   schedule 13.10.2017