ViewModel属性绑定为null

时间:2017-06-30 17:38:33

标签: asp.net-mvc razor

我有这个ViewModel

 public class MyViewModel
{
    public Customer Customer{ get; set; }
    public Account Account{ get; set; }
    public DateTime MyDate{ get; set; }
}

此视图

    @using (Html.BeginForm("Final", "Home", FormMethod.Post, new { @class = "form" }))
    {
        @Html.AntiForgeryToken()
        @Html.HiddenFor(m => m.Customer)....

        @Html.DisplayFor(m => m.Customer.FirstName) //This displays the name ok

这是我的控制器

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Final(MyViewModel viewModel)
{
    viewModel.Customer.... //This is null

问题是,我不必编辑属性,只显示它们然后保存到数据库,这就是我使用HiddenFor的原因,但Customer和Account属性绑定为null。 问题是什么?也许是HiddenFor?

PS:我有GET方法,我在其中执行适当的返回View(viewModel)

这是我传递ViewModel

的地方
 [HttpGet]
    public ActionResult Final()
    {
        var viewModel = new MyViewModel
        {

           //set the properties, etc
        };

        return View(viewModel);
    }

1 个答案:

答案 0 :(得分:2)

客户是一个复杂的对象,因此您需要将Customer的每个属性作为隐藏字段。

@Html.HiddenFor(m => m.Customer.FirstName)
@Html.HiddenFor(m => m.Customer.LastName)

或者,您可以将整个MyViewModel存储在使用会话状态的TempData中。