Смущает то, как ASP .NET MVC заполняет поля на основе модели представления и значений отправленной формы - PullRequest
1 голос
/ 08 апреля 2011

Не уверен, что этот вопрос уже задавался.

Я занимаюсь разработкой сайта ASP .NET MVC 2.В моем представлении есть раскрывающийся список, в котором пользователь может выбрать, какую запись отображать для редактирования.Когда этот раскрывающийся список изменяется, значения полей для текущей выбранной записи автоматически публикуются на сервере и сохраняются в сеансе.В ответе сервер возвращает представление для редактирования новой выбранной записи.

Проблема, с которой я столкнулся, заключается в том, что некоторые значения полей из предыдущей записи запоминаются при отображении новой записи.

На мой взгляд, у меня есть что-то вроде следующего, которое вызывает проблему:

<%= Html.TextBox("ActionTypeDetails.DisplayName", 
                 Model.ActionTypeDetails.DisplayName) %>

Здесь я хочу, чтобы опубликованные данные заполняли параметр с именем ActionTypeDetails , который имеет несколько свойстввключая DisplayName .

Мои действия контроллера выглядят примерно так:

public ActionResult EditActionType(Guid PluginEditID, 
                                   Guid? SelectedActionTypeID, 
                                   ActionTypeViewObj ActionTypeDetails)

Я попытался изменить свое представление на это:

<%= Html.TextBox("PostedActionTypeDetails.DisplayName", 
                 Model.ActionTypeDetails.DisplayName) %>

И мое действие контроллера к этому:

public ActionResult EditActionType(Guid PluginEditID, 
                                   Guid? SelectedActionTypeID, 
                                   ActionTypeViewObj PostedActionTypeDetails)

Все же это все еще показывает ту же проблему.Может кто-нибудь объяснить, почему это так работает?Какой самый простой обходной путь, который все еще позволил бы мне использовать встроенную привязку модели?Я знаю, что могу очистить ModelState, но это не идеально, так как я хочу, чтобы некоторые другие данные в форме запоминались.

1 Ответ

0 голосов
/ 08 апреля 2011

Если вы отправляете обратно на тот же URL, asp.net имеет механизмы, которые сохраняют значения полей.Больше информации можно найти здесь .

...