TextBoxFor - показывает неверное значение - PullRequest
6 голосов
/ 31 августа 2011

Хорошо, у меня здесь странный вопрос. Я знаю, что значение передается в свойство правильно, так как это прекрасно работает:

@Html.TextBox("Foo", Model.Foo, new { @class = "bar" })

Теперь, если я сделаю это:

@Html.TextBoxFor(m => m.Foo, new { @class = "bar" })

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

Я не против использовать @Html.TextBox() для этого конкретного, но я хотел бы получить основание этого.

У кого-нибудь еще было что-нибудь случайное, как это случилось? У меня есть несколько элементов управления на этой конкретной странице, и это единственный, с которым это происходит.

Ответы [ 3 ]

9 голосов
/ 31 августа 2011

О боже ... Я только что нашел виновника.Это значение маршрутизации URL!lol

В моем глобальном файле у меня был {something}/{whatever}/{id}/{foo}, {foo}, являющийся необязательным параметром для того, чтобы сделать URL страницы более понятным для человека.

Интересно, что выражение, используемоеTextBoxFor вытягивает из URL, а не viewmodel.Я бы подумал, что он прочитает модель, прежде чем перейти к URL?Даже intellisense тянет от модели.Это какая-то ошибка?

Примечание для себя: Всегда убедитесь, что свойства имеют разные имена!

Надеюсь, этот опыт поможет другим.

1 голос
/ 12 августа 2017

Это случилось со мной, когда я выполнял ajax-вызов для создания сущности и после успеха перезагружал список сущностей с частичным представлением. Во время перезагрузки текстовые поля в представлении принимали значение нового объекта, добавленного для всех элементов в списке. Добавление ModelState.Clear(); к коду сервера исправило это.

0 голосов
/ 31 августа 2011

Не могли бы вы опубликовать некоторый код из View, где это происходит, а также модели?Это, вероятно, что-то там, в отличие от @Html.TextBoxFor() метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...