Html.Hidden создает неверные данные значения в приложении MVC 2 - PullRequest
1 голос
/ 25 сентября 2010

Я использую значение id, которое передаю в скрытом поле. Когда пользователь отправляет форму, мне нужно скрытое поле для моего обновления. После обновления новое значение помещается в скрытое поле в модели и отправляется обратно в представление. Что кажется странным, так это то, что помощник всегда использует первое значение, а не обновления. Например, посмотрите на следующее из представления:

<%: Html.Hidden("MyId",Model.MyId)  %>
<%: Model.MyId %>

Первый раз при взгляде на источник в браузере выдает:

<input type="hidden" id="MyId" name="MyId" value="1" />
1

** отправьте обратно контроллеру, и модель обновит свойство MyId до 2.

Вернувшись в браузер, я теперь нахожу:

<input type="hidden" id="MyId" name="MyId" value="1" />
2

Одно и то же свойство модели имеет разные значения! Вспомогательный метод как-то захватывает его из экземпляра предыдущей модели или что-то в этом роде?

Любая помощь очень ценится на том, что я не понимаю. Кстати ... получите то же самое поведение с Html.TextBox и Html.TextBoxFor.

Спасибо.

1 Ответ

7 голосов
/ 25 сентября 2010

Вот так работают HTML-помощники, и это по замыслу.При связывании они сначала смотрят на значение в запросе GET / POST, чтобы увидеть, присутствует ли значение и после этого в модели.Если в запросе найдено значение, они просто проигнорируют значение, установленное в модели.

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

<input type="hidden" name="MyId" value="<%= Model.MyId %>" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...