Asp.net mvc 4 从视图绑定到控制器时,MVC4复杂对象为空

Asp.net mvc 4 从视图绑定到控制器时,MVC4复杂对象为空,asp.net-mvc-4,null,viewmodel,model-binding,Asp.net Mvc 4,Null,Viewmodel,Model Binding,我在StackOverflow上发现了几个问题,这些问题清楚地描述了我的问题,但我无法在我的案例中得到修复。这个问题让我在过去的两天里忙个不停,所以这里是我的问题 我有两个包含属性和方法的ViewModels(这些方法仅用于UI交互逻辑)。当我发布表单时,我的模型只有一个对象属性被绑定,第二个对象属性的所有属性都为空,我不知道为什么 以下是我的ViewModel的代码: public class Circuit { public Voyageurs infosVoyageurs { ge

我在StackOverflow上发现了几个问题,这些问题清楚地描述了我的问题,但我无法在我的案例中得到修复。这个问题让我在过去的两天里忙个不停,所以这里是我的问题

我有两个包含属性和方法的ViewModels(这些方法仅用于UI交互逻辑)。当我发布表单时,我的模型只有一个对象属性被绑定,第二个对象属性的所有属性都为空,我不知道为什么

以下是我的ViewModel的代码:

public class Circuit
{
    public Voyageurs infosVoyageurs { get; set; }
    public CircuitInput inputCircuit { get; set; }

    public Circuit()
    {
        inputCircuit = new CircuitInput();
    }

    public class CircuitInput
    {
        public CircuitInfos infos;
        public List<CircuitInfos> etapesCircuit { get; set; }

        public CircuitInput()
        {
            infos = new CircuitInfos();
            etapesCircuit = new List<CircuitInfos>();
        }


        public class CircuitInfos
        {
            public DateTime horaireArrivee { get; set; }
            public DateTime horaireDepart { get; set; }
            public string pays { get; set; }
            public string adresse1 { get; set; }
            public string adresse2 { get; set; }
            public string adresse3 { get; set; }
            public string ville { get; set; }
            public string codePostal { get; set; }
            public string visite { get; set; }
            public List<string> listeVisites { get; set; }

            public CircuitInfos()
            {
                listeVisites = new List<string>();
                horaireArrivee = DateTime.Now.AddDays(4);
                horaireDepart = DateTime.Now.AddDays(2);
            }
        }
}
因此,Voyageurs类型的属性被发送到控制器,我可以看到调试时填充的所有字段。但是,CircuitInput类型的属性的所有成员都为null,我不明白为什么,因为我为每个属性都放置了一个隐藏字段

我在这个复杂的视图模型中使用这个模式,因为我有一个多步骤表单,我不想使用会话状态。请告诉我问题是否来自我的ViewModel,它误导了模型绑定器

编辑 有一件事对理解我的ViewModel很有用:我使用List对象进行预存储,这样用户就可以填充、添加实例,并且我只在最后调用数据库代码以减少消耗


谢谢

您能尝试将{get;set;}添加到infos吗

public CircuitInfos infos {get;set;}

我记得当我忘记这些时,我遇到了类似于您的问题

为什么
CircuitInfos
CircuitInput
中的嵌套类?如果你把它移到它自己的类中,这能解决你的问题吗?它是一个嵌套类,只是出于逻辑目的,我用它来检索用户的输入。每当一个类同时具有要显示的属性和要从用户输入中检索的属性时,我就会创建一个嵌套类。。。。。。。。。。。。天啊,我错过了。就为了这件事损失了两天。非常感谢你!我也有同样的问题,但我也有一些能手和二传手,但仍然有同样的问题
[HttpPost]
public ActionResult Circuit(ViewModels.Models.Booking.Circuit etapePrecedente)
public CircuitInfos infos {get;set;}