Это следующий вопрос:
MVC 3 + $.ajax - ответ, кажется, кэширует вывод из частичного представления
Здесь есть подробное описание проблемы. Однако теперь мне удалось сузить проблему, которая, похоже, связана с помощником Html.EditorFor, поэтому новый вопрос.
Проблема:
Я отправляю данные на сервер с помощью $.ajax, затем возвращаю html частичного представления, содержащего элементы управления вводами. Проблема в том, что, несмотря на передачу вновь созданного объекта модели Partial Views, различные @Html.EditorFor и @Html.DropDownListFor помощники возвращают OLD DATA!.
Я могу доказать, что модель правильно передала новый объект хелперам, напечатав значение рядом с помощником Html. То есть:
@Html.EditorFor(model => model.Transaction.TransactionDate)
@Model.Transaction.TransactionDate.ToString()
Как показано на следующем рисунке, @Html.EditorFor возвращает неверные данные:
[Обратите внимание, что значение рядом с текстовым полем Comentario является временем даты, потому что я тестировал замену значений по умолчанию на значение, которое будет меняться с каждым сообщением, то есть с DateTime.]
Если я заменил @Html.EditorFor для TransactionDate с простым старым @Html.TextBox():
@Html.TextBox("Transaction_TransactionDate", Model.Transaction.TransactionDate)
Затем он отображает правильное значение TransactionDate для нового объекта Transaction, то есть DateTime.MinValue(01/01/0001...).
Поэтому...
Проблема связана с помощниками @Html.EditorFor. Проблема также возникает с TextBoxFor и DropDownListFor.
Проблема заключается в том, что эти помощники, похоже, кэшируют старое значение.
Что я делаю неправильно?!
EDIT:
Я только что попробовал отладку в настраиваемом шаблоне редактора для дат, и там, ViewData.TemplateInfo.FormattedModelValue показывает правильное значение, то есть "01/01/0001". Однако, как только он попадает к Fiddler, в ответе отображается старая дата, например, "01/09/2011" на изображении выше.
В результате я просто думаю, что здесь происходит некоторое кеширование, но у меня нет настройки, поэтому ничего не имеет смысла.