我对它的工作原理感到非常困惑:
我有一个由控制器呈现的部分视图。此部分视图通过 Ajax 调用呈现,并由控制器的 ActionResult 提供服务。部分视图是强类型的,并通过模型渲染
return this.PartialView("OuterPartialView", modelObject).
在这个局部视图中,我通过@{ Html.RenderPartial("HiddenVariablesView", Model); }
渲染一小部分隐藏变量(我使用 HiddenFor 将它们注入表单)的调用来渲染另一个局部视图,它也是强类型并绑定到同一模型。
问题是:隐藏的输入变量在 HTML 中呈现为模型的空/默认值 - 就好像传递的模型只是通过默认构造函数创建的一样。更奇怪的是,当我在局部视图生成(“HiddenVariablesView”和“OuterPartialView”)中放置一个断点时,我可以看到我的模型对象被正确填充。
将不胜感激任何建议
编辑: “OuterPartialView”有一个提交回自身的表单(通过 ajax),并且基本上用 div 内的新版本替换自身。看起来局部视图的模型正在恢复为通过动作控制器的 GET 方法构造 OuterPartialView 时最初创建的模型。在提交期间会调用控制器的任何 POST 方法,但在控制器内部完成的模型更改不会反映在生成的 HTML 中