我的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时不会出现问题。但由于这不是动态列表,因此不应该是必要的。
答案 0 :(得分:0)
在返回视图之前添加Model.Clear() 我有同样的问题。另一个主要不相关的问题是某些属性发布了空白值,而其他属性则很好。这也解决了我的问题。
答案 1 :(得分:-1)
仅用于测试尝试使用纯HTML(无HTML帮助程序)控制和绑定值。