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尝试了其他东西。我为它创建了一个新问题:。我确实做到了,但我对代码不是很满意,所以如果有人有比我自己提供的答案更好的方法,我会对这个和那个问题给予肯定!