我有一个视图模型,视图模型的一个属性是一个名为Profile的对象。 Profile的一个属性是另一个对象的列表,称为CD。从视图中,我将POST主体值设置为以下
Profile.CD[0].Prop1=TEST&Profile.CD[0].Prop2=TEST&Profile.CD[1].Prop1=TEST2&Profile.CD[1].Prop2=TEST2
如果我要将第三个对象添加到视图中的列表中,该列表将作为Profile.CD[2].Prop1=TEST3
发布,则在控制器中突然Profile.CD
为空。 2个项目及以下Profile.CD
获取我期望的值。一旦我添加第三项,模型活页夹就会停止工作。我的智慧结束了,我已经尝试了所有我能想到的东西。
我尝试过的事情
从视图中删除项目,然后添加新项目 - WORKS
从视图中删除两者,并添加2个新项目 - WORKS
在视图中添加第三个项目 - 视图模型中的FAILS Profile.CD
为空
我没有使用任何模型状态验证规则。在调试时,我在立即窗口?Request.Form.Where(x => x.Keys.Contain("Profile.CD")).ToList())
中尝试了类似下面的内容,当然,即使列表在视图模型中为null,我的所有值都存在于Request
对象中。
Profile.CD
中对象的值不必是唯一的..我已经尝试将每个值设置为“TEST”,只是为了验证它不是导致此问题的输入。
我真的迷失了......
查看模型
public class PortalViewModel {
public ProfileModel Profile { get; set; }
}
个人资料模型
public class ProfileModel {
//bunch of other static properties that are bound just fine.. like strings and decimals...
public List<CDModel> CD { get; set; }
}
控制器
public async Task<IActionResult> Edit (PortalViewModel Model)
{
Repo.UpdateProfile(Model.Profile); // in this method it foreachs Profile.CD , but sometimes this is null and other times it get's it's values....
return Ok();
}
答案 0 :(得分:1)
我无法找到解决此问题的编码解决方案,并开始探索其他途径。我已经修复了这个问题,但它没什么意义。
我将项目从.net核心1.0.1升级到.net核心1.0.5,一切都在100%的时间都在运行。在这次升级中,我没有进行任何代码更改。刚刚升级的.net核心。很奇怪..