【问题标题】:ASP.Net Razor view uses cached valueASP.Net Razor 视图使用缓存值
【发布时间】: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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    仅用于测试尝试使用纯 HTML(无 HTML 助手)控件和绑定值。

    【讨论】:

      猜你喜欢
      • 2011-10-09
      • 2011-09-24
      • 1970-01-01
      • 2019-05-10
      • 2014-04-04
      • 1970-01-01
      • 1970-01-01
      • 2018-04-08
      相关资源
      最近更新 更多