ASP.Net Razor视图使用缓存值

本文关键字:缓存 视图 Net Razor ASP | 更新日期: 2023-09-27 18:14:52

我的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时问题不会发生。但是由于这不是一个动态列表,所以不应该有这个必要。

ASP.Net Razor视图使用缓存值

在返回视图之前添加Model.Clear()。
我也遇到过同样的问题。另一个几乎不相关的问题是,有些属性发布空白值,而其他属性则没有问题。

为了测试,请尝试使用纯HTML(没有HTML helper)控制和绑定值