HTML表单回发后,隐藏字段不会更新

Raj*_*esh 20 asp.net-mvc asp.net-mvc-3

@Html.HiddenFor(model => model.JobIndicator)
Run Code Online (Sandbox Code Playgroud)

提交页面后,JobIndicator的值不会刷新.

当我在显示字段中显示时,我可以看到值更新.

The*_*aye 33

把它放在你的控制器中:

ModelState.Remove("JobIndicator");
Run Code Online (Sandbox Code Playgroud)

然后您的隐藏字段将被更新.

  • 它帮助我通过使用<input type ="hidden"name ="Name"id ="Name"value ="@ Model.Name"/>而不是@Html.HiddenFor(m => m.Name)来解决问题 (4认同)
  • 我喜欢这个答案,但我讨厌这种行为; 不太直观.它似乎很少出现,因为我要么在POST回来之前更改字段值客户端,要么我正在创建一个新模型,但是如果我设置了值,我希望它能够设置. (3认同)

oct*_*ccl 21

问题是Html帮助程序从您调用post动作时ModelState传递的模型中获取数据.要解决此问题,您可以在返回视图之前调用post操作,这样就可以清除并重新填充信息.一旦您的视图重新生成.ModelState.Clear()ModelState

您可以在此博客中找到有关此问题(以及其他解决方案)的更多信息

  • 这每次都让我着迷。 (2认同)