I have a view model, and one of the properties of the view model is an object called Profile. One of the properties of a profile is a list of another object called a CD. In the view, I set the POST body values as follows
Profile.CD[0].Prop1=TEST&Profile.CD[0].Prop2=TEST&Profile.CD[1].Prop1=TEST2&Profile.CD[1].Prop2=TEST2
If I have to add a third object to the list in the view to be published as Profile.CD[2].Prop1=TEST3
, in the controller all sudden ones Profile.CD
will be empty. 2 elements and below Profile.CD
get the values I would expect. As soon as I add to this third element, the model binder stops working. I am in my mind and I tried everything I could think of.
Things i tried
Removing an item from a view and adding a new one - WORKS
Removing both from the view and adding 2 new elements - WORKS
Adding a third element to the view - FAILS Profile.CD
is null in the view model
I do not use any rules for checking the state of the model. When debugging in the nearest window, ?Request.Form.Where(x => x.Keys.Contain("Profile.CD")).ToList())
I tried something like the following: all my values are present in the object Request
, although in the view model this list is zero.
The values of the objects in Profile.CD
do not have to be unique .. I tried setting each value to "TEST" to make sure that this is not the input causing this problem.
I am really lost.
Show model
public class PortalViewModel {
public ProfileModel Profile { get; set; }
}
Profile model
public class ProfileModel {
//bunch of other static properties that are bound just fine.. like strings and decimals...
public List<CDModel> CD { get; set; }
}
controller
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 it values....
return Ok();
}
source
share