Ajax.BeginForm - 可能的bug - MVC

时间:2010-11-08 13:05:28

标签: asp.net-mvc

如果您Html.Hidden(...)Ajax.BeginForm并且您不止一次提交表单并且使用ViewData或其他任何内容更新隐藏字段的值,则不会更新。也许是因为Html.Hidden是服务器端控件。 (Html.Hidden位于UpdateTargetId div内)

事情会破坏的另一种方法是,如果Html.TextBox内有Ajax.BeginForm或者其他东西,你需要根据Ajax请求中的内容使用某种if,else来隐藏/显示它条款。它不会出现/消失。

1 个答案:

答案 0 :(得分:3)

这里已经被问了几百万次,我已经回答了数百万次 - 这是设计的:HTML帮助器在绑定之前总是使用POSTed值,然后再查看ViewData或模型。这基本上意味着您不能更改控制器操作中的值,这是设计使然。如果您不喜欢这种设计,或者只是简单地编写自己的html助手:

<input type="hidden" name="foo" value="<%: ViewData["foo"] %>" />

如果你使用html helper:

<%: Html.Hidden("foo") %>

如果有一个POSTed值foo,无论你在ViewData放入什么,都会使用这个值。