ASP.NET MVC 3 Ajax.BeginForm意外重置模型值

时间:2012-10-01 12:31:58

标签: asp.net ajax asp.net-mvc-3

我有一个部分视图,其中包含以下代码段:

@model Mbrrace.Domain.MbrraceForm
<div class="row">
    <div class="span12 form-horizontal">
    @using (Ajax.BeginForm("DetailsSection11", "DataForm",
        new AjaxOptions
        {
            HttpMethod = "POST",
            OnComplete = "NextTab"
        }
        ))

在调用显示该局部视图的视图的控制器中,预设了一些模型值但未显示或以其他方式使用。当Ajax提交发生时,其中一些值已被清除(ints更改为零,字符串为null)但是保留了日期值。表单中设置的值将正确返回。

我已经检查了预设值在使用@ Html.DisplayFor到达表单时是否正确显示它们。

我在解决方案的其他地方使用Ajax.BeginForm和模型,完全没有问题。我在提交之前和之后检查了ModelState,它是有效的。我也尝试过ModelState.Clear()而没有效果。

在我撕掉我的头发剩余的东西之前,任何想法可能是什么问题。

1 个答案:

答案 0 :(得分:0)

如果表单中没有相应的输入字段,则在POST表单时永远不会将其提交给服务器。因此,默认模型绑定器将无法从请求中绑定您的模型,当然所有这些属性都将具有其默认值。所以你有几种可能性:

  • 将这些属性包含在表单中的隐藏字段中。
  • 在你的POST控制器操作中从你在GET操作(数据库或其他东西)中获取它们的任何地方获取它们。