我们正在使用众所周知的Post-Redirect-Get模式来防止在我们的MVC应用程序中双重发布。与大多数实现一样,我们将模型状态存储在Http-Post-Action中的TempData
内,并在我们重定向到的操作中使用ModelState.Merge()
恢复模型状态。这在大多数情况下非常有效,但在以下情况下我们将新元素添加到嵌套的View-Model中。
Property[n+1].Value
及其值,并存储在TempData
中。在Merge()
重定向到Get-Method的filterContext
中的模型状态包含附加元素之后。现在,当渲染视图时,新元素不会重新创建,因为它只在模型状态而不在模型中。在模型上查看创建循环(没有新的嵌套对象),EditorFor<>
从模型状态获取值,这是预期的。这个问题有通用的解决方案吗?
答案 0 :(得分:0)
显然没有快速解决问题的办法。我们从控制器中的错误路径上的重定向(严格PRG)切换到此blog中描述的实现。它工作得很好,甚至加速了应用程序,因为控制器错误路径上返回的json处理速度比完整的ViewResult快得多。