2010-11-08 2 views
-2

Если у вас есть Html.Hidden(...) внутри Ajax.BeginForm, и вы отправляете форму более одного раза, и вы обновляете значение скрытого поля с помощью ViewData или что-то еще, оно не будет обновляться. Возможно, потому что Html.Hidden - это серверный элемент управления. (Html.Hidden находится внутри UpdateTargetId дел)Ajax.BeginForm - возможная ошибка - MVC

Другой способ вещей будет перерыв, если есть Html.TextBox внутри Ajax.BeginForm или что-то и вам нужно, чтобы скрыть/показать его на основе того, что выходит из этого Ajax запрос с использованием своего рода, если else. Он не появится/не исчезнет.

+3

Что вы спрашиваете? – jfar

ответ

3

Здесь было задано миллион раз, и я ответил миллионы раз - это по дизайну: HTML-помощники всегда используют значение POSTED при привязке, прежде чем смотреть на ViewData или модель. Это в основном означает, что вы не можете изменить значение в действии контроллера, и это по дизайну. Вы можете написать свой собственный HTML помощник, если вам не нравится этот дизайн или просто:

<input type="hidden" name="foo" value="<%: ViewData["foo"] %>" /> 

Если вы используете HTML хелпер:

<%: Html.Hidden("foo") %> 

если есть отправленное значение foo именно это значение, которое будет использоваться независимо от того, что вы положили в ViewData.

+0

, но это все еще не соответствует моей второй заботе. Скрытие/отображение Html.TextBoxx на основе того, что содержит модель. – TPR

+0

Ваша вторая проблема совершенно непонятна. Все, что я понял, скрывается/проявляется и исчезает. Может быть, вы могли бы попытаться быть более конкретными. Не можете ли вы просто проверить значение модели в представлении и на основе этого значения включить или не включать этот TextBox? –

+0

Это именно то, что я делал. Проверьте значение модели в представлении и на основе этого значения включите или нет этот TexBox. Когда я отлаживаю код, он даже попадает в правильное предложение «if». Почему это не выводит на экран мою заботу. – TPR

Смежные вопросы