ASP.Net Razor视图使用缓存值

时间:2014-07-25 09:32:53

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

我的ASP Razor观点有问题。

我有一个Action,它接受模型,操纵它然后使用PartialView来显示结果(部分视图与用于回发的视图相同)。

模型更新得很好,但视图引擎呈现旧值而不是新值。因此EditorFor不使用新模型值,而是使用模型发布时的值。

我已将OutputCache属性应用于我的操作:

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]

但这并没有改变任何事情。

另外我知道这不是客户端缓存问题,因为EditorFor返回的结果已经设置了错误的值。

修改 以下是该操作的完整代码。它基本上调用一个Service来保存数据并更新Model。

[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);
}

由于Model包含List,我发现当我使用BeginCollectionItem时不会出现问题。但由于这不是动态列表,因此不应该是必要的。

2 个答案:

答案 0 :(得分:0)

在返回视图之前添加Model.Clear() 我有同样的问题。另一个主要不相关的问题是某些属性发布了空白值,而其他属性则很好。这也解决了我的问题。

答案 1 :(得分:-1)

仅用于测试尝试使用纯HTML(无HTML帮助程序)控制和绑定值。