ASP.NET MVC 2 Html.TextAreaFor Html.TextArea WEIRD Binding - PullRequest
1 голос
/ 09 июня 2011

Это самое странное поведение, с которым я столкнулся в наборе элементов управления / помощников по умолчанию в ASP.NET MVC

Я отправляю значение текстовой области как таковое:

<%:Html.TextAreaFor(x=>x.Data.Body,new {style="display:none;", @class="ckeditor"}) %>

В своем действии контроллера я возвращаю другое значение для Data.Body (то есть model.Data.Body = "junk"), но я все еще вижу первоначально опубликованное значение внутри поля textarea.

Если я делаю

<textarea id="Data.Body" name="Data.Body" style="display:none;" class="ckeditor">
    <%=Model.Data.Body %>
</textarea>

Работает как положено.

Есть идеи?

Спасибо.

1 Ответ

3 голосов
/ 09 июня 2011

Это сделано специально - помощники HTML отобразят опубликованные данные, а не то, что есть в модели.Они предполагают, что вы будете использовать шаблон Post-Redirect-Get и что при успешной публикации вы должны перенаправить метод GET.Если вы повторно отображаете информацию после публикации, помощники предполагают, что произошла ошибка, и они отображают исходные опубликованные значения, чтобы пользователь мог их «исправить».

Вы можете ModelState.Clear, если не хотитеэто должно произойти, но я хотел бы рассмотреть программирование на основе стандартного шаблона PRG post-redirect-get.

Я столкнулся с этим некоторое время назад - см. мои публикации здесь: Обновление поставщика значений до TryUpdateModel

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