Это продолжение следующего вопроса:
MVC 3 + $ .ajax - ответ, кажется, кэширует выходные данные из частичного представления
Там есть подробное описание проблемы. Однако теперь мне удалось сузить проблему, которая, похоже, связана с помощниками Html.EditorFor, поэтому появился новый вопрос.
Выпуск:
Я отправляю данные на сервер, используя $ .ajax, затем возвращаю html частичного представления, которое содержит элементы управления вводом. Проблема в том, что, несмотря на передачу вновь созданного объекта в модель Partial Views, различные помощники @ Html.EditorFor и @ Html.DropDownListFor возвращают СТАРЫЕ ДАННЫЕ!.
Я могу доказать, что модель правильно передала помощникам новый объект, напечатав значение рядом с помощником 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» на изображении выше.
В результате я просто думаю, что здесь происходит какое-то кеширование, но я ничего не настроил, поэтому ничего не имеет смысла.