Asp.net 是否更新MVC 3应用程序中的模型子集合?

Asp.net 是否更新MVC 3应用程序中的模型子集合?,asp.net,entity-framework,asp.net-mvc-3,updatemodel,Asp.net,Entity Framework,Asp.net Mvc 3,Updatemodel,这是一个更大的问题的一部分,这个问题困扰了我一段时间,现在请看整幅图 但我发现了一个网站,上面有一个人曾经遇到过类似的问题,显然是为了满足他的需要而解决了这个问题。我试过了,但不得不做一些修改以适应我的代码,史蒂文·桑德森的教程提供的助手方法见上一篇文章 我看起来很接近,但不是很接近: UpdateModel(consultant, "Consultant"); if (vm.Programs != null) //Unnecessary? Can it eve

这是一个更大的问题的一部分,这个问题困扰了我一段时间,现在请看整幅图

但我发现了一个网站,上面有一个人曾经遇到过类似的问题,显然是为了满足他的需要而解决了这个问题。我试过了,但不得不做一些修改以适应我的代码,史蒂文·桑德森的教程提供的助手方法见上一篇文章

我看起来很接近,但不是很接近:

        UpdateModel(consultant, "Consultant");

        if (vm.Programs != null) //Unnecessary? Can it even be null if it's initialized from the model?
            for (int i = 0; i < vm.Programs.Count; i++)
            {
                Program formProgram = vm.Programs[i];
                Program modelProgram = consultant.Programs.SingleOrDefault(x => x.Id == formProgram.Id);
                if (modelProgram == null)
                    _repository.AddProgram(formProgram);
                else
                    modelProgram = formProgram;
                UpdateModel(modelProgram); //Doesn't work. The modelProgram object does get updated with the correct property values, but it isn't saved to the repository...
            }
        _repository.Save();
虽然这遵循了上面站点上的示例,并且modelProgram确实会使用更改的属性进行更新,但这些值不会保存到_repository.Save on Consultant对象上的数据库中,即使modelProgram对象是对Consultant上的Program对象的引用。。。我做错了什么

顺便说一下,我正在使用实体框架,如果不清楚的话

顺便说一句,如果有人对前一个问题和整个情况有任何意见,那也是欢迎的,它仍然没有解决

请帮帮我,我对MVC失去了信心,我最近非常激动


更新:这里显然有一个错误:UpdateModel实际上没有做任何更新,我只是引用了另一个对象——modelProgram的viewmodel中的对象,所以它当然有正确的属性值。我仍然想知道如何实现这一点…

尝试在for循环中移动_repository.Save

你的内心是否正确?当modelProgram为空时,您正在运行UpdateModelnull。这可能会导致崩溃,并解释为什么什么也救不了

编辑

尝试输入{}

            if (modelProgram == null)
               {
                 _repository.AddProgram(formProgram);
               }
            else                    
              {
                modelProgram = formProgram;                
                UpdateModel(modelProgram); 
               }

这没什么区别。请参阅上面的更新-UpdateModel根本没有做任何事情,modelProgram=formProgram显然是错误的。。。所以我仍然感到困惑。也没有任何区别,看起来整个事情在视图中的结构方面是错误的。现在使用AutoMapper,请看上面的评论。@everyone:我用AutoMapper尝试了其他东西。我为它创建了一个新问题:。我确实做到了,但我对代码不是很满意,所以如果有人有比我自己提供的答案更好的方法,我会对这个和那个问题给予肯定!