如果您Html.Hidden(...)
内Ajax.BeginForm
并且您不止一次提交表单并且使用ViewData
或其他任何内容更新隐藏字段的值,则不会更新。也许是因为Html.Hidden
是服务器端控件。 (Html.Hidden
位于UpdateTargetId div内)
事情会破坏的另一种方法是,如果Html.TextBox
内有Ajax.BeginForm
或者其他东西,你需要根据Ajax请求中的内容使用某种if,else来隐藏/显示它条款。它不会出现/消失。
答案 0 :(得分:3)
这里已经被问了几百万次,我已经回答了数百万次 - 这是设计的:HTML帮助器在绑定之前总是使用POSTed值,然后再查看ViewData或模型。这基本上意味着您不能更改控制器操作中的值,这是设计使然。如果您不喜欢这种设计,或者只是简单地编写自己的html助手:
<input type="hidden" name="foo" value="<%: ViewData["foo"] %>" />
如果你使用html helper:
<%: Html.Hidden("foo") %>
如果有一个POSTed值foo
,无论你在ViewData
放入什么,都会使用这个值。