【发布时间】:2011-11-16 21:06:38
【问题描述】:
这是以下问题的后续:
MVC 3 + $.ajax - response seems to be caching output from partial view
那里有问题的详细描述。但是,我现在已经设法缩小问题范围,这似乎与 Html.EditorFor 助手有关,因此是新问题。
问题:
我使用 $.ajax 将数据发布到服务器,然后返回包含输入控件的局部视图的 html。问题是,尽管将新创建的对象传递给 Partial Views 模型,各种 @Html.EditorFor 和 @Html.DropDownListFor 帮助器返回旧数据!。
我可以通过在 Html 助手旁边打印值来证明模型已正确地将新对象传递给助手。即:
@Html.EditorFor(model => model.Transaction.TransactionDate)
@Model.Transaction.TransactionDate.ToString()
如下图所示,@Html.EditorFor 返回了错误的数据:
[请注意,注释文本框旁边的值是日期时间,因为我正在测试将默认值替换为每个帖子都会更改的值,即日期时间。]
如果我将 TransactionDate 的 @Html.EditorFor 替换为普通的旧 @Html.TextBox():
@Html.TextBox("Transaction_TransactionDate", Model.Transaction.TransactionDate)
然后它为新的 Transaction 对象呈现正确的 TransactionDate 值,即 DateTime.MinValue (01/01/0001...)。
所以……
问题在于@Html.EditorFor 助手。 TextBoxFor 和 DropDownListFor 也会出现问题。
问题在于这些助手似乎缓存了旧值。
我做错了什么??!
编辑:
我刚刚尝试在自定义编辑器模板中调试日期,其中 ViewData.TemplateInfo.FormattedModelValue 显示正确的值,即“01/01/0001”。但是,一旦到达 Fiddler,响应就会显示旧日期,例如上图中的“01/09/2011”。
结果,我只是认为这里有一些缓存,但我没有设置,所以没有任何意义。
【问题讨论】:
-
注意,这种行为也发生在 MVC 4 中。
标签: asp.net-mvc-3 jquery html-helper