【发布时间】:2015-06-08 23:59:21
【问题描述】:
我的 ASP Razor 视图有问题。
我有一个Action,它获取模型,对其进行操作,然后使用PartialView 显示结果(部分视图与用于回发的视图相同)。
模型更新得很好,但视图引擎呈现旧值而不是新值。所以EditorFor 不使用新的模型值,而是使用模型发布时的值。
我已将OutputCache 属性应用于我的操作:
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
但这并没有改变任何东西。
我也知道这不是客户端缓存问题,因为EditorFor 返回的结果已经设置了错误的值。
编辑 这是动作的完整代码。它基本上调用了一个服务来保存数据并更新模型。
[HttpPost]
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public async Task<ActionResult> Edit(StaffingCostRatesForYearViewModel vm)
{
if (ModelState.IsValid)
{
vm = await TryAsync(() => Client.UpdateStaffingCostRatesAsync(vm), vm, x => RestoreDropDowns(x), "Fehler beim Speichern");
}
else
{
await RestoreDropDowns(vm);
}
return PartialView("EditorTemplates/StaffingCostRatesForYearViewModel", vm);
}
由于模型包含一个列表,我发现当我使用 BeginCollectionItem 时不会出现问题。但是由于这不是动态列表,所以它不应该是必需的。
【问题讨论】:
-
如果您删除
OutputCache指令,问题是否仍然存在? -
是的,删除属性没有效果。
-
您能提供您的操作代码吗?
标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor