POST后丢失ViewModel数据

Pos*_*Guy 4 asp.net-mvc asp.net-mvc-3

我没有经常看到这个问题,但我有一个使用布局的.cshtml.在布局中我得到了:

@using (Html.BeginForm(null, null, FormMethod.Post, new { @class = "someCssClass", @id = "UserForm" }))
{
      ...rest of the code
}
Run Code Online (Sandbox Code Playgroud)

我使用此布局的主要.cshtml已经像我们一样在顶部定义了模型:

@model CarViewModel 
@{
    Layout = "~/Views/Shared/_CarLayout.cshtml";
}
Run Code Online (Sandbox Code Playgroud)

当它回到我的动作方法时,我得到模型的所有值的空值:

public ActionResult Cars(CarViewModel model)
{
    carBL.RemoveCars(model.CarIds, model.DealerId);
    ...
}
Run Code Online (Sandbox Code Playgroud)

不确定我在这里需要做什么以及为什么会这样.通常我只是通过autobind成功恢复它.在我看来,当通过RAzor在标记中使用模型时 - 使用返回的ViewModel可以很好地发布模型但是如果我没有使用这些字段,那么它就不会......所以我认为这是如何工作的,如果我没有在标记中使用它们我需要将它们作为隐藏值发回然后强制执行持久性,因为我没有使用ViewModel中的x字段(如果我在表单中使用它们会自动保留这些字段)?

The*_*lTy 13

如果值未绑定到表单字段,则它们将返回null.

在表单中使用下面的ID字段之类的东西.

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