@@ -399,6 +399,36 @@ public void SupportCollectionPopulate()
399399 Assert . AreEqual ( "Item2" , originalInstances . Item1_ . P1 ) ; // was "Old2"
400400 }
401401
402+ [ TestMethod ]
403+ public void EmptyGetOnlyCollectionPopulate ( )
404+ {
405+ var obj = new TestViewModelWithGetOnlyCollection ( ) ;
406+ obj . Items . Add ( new TestViewModelWithBind { P1 = "new" } ) ;
407+ var json = Serialize ( obj , out var _ , isPostback : true ) ;
408+
409+ var obj2 = PopulateViewModel ( json , new TestViewModelWithGetOnlyCollection ( ) ) ;
410+
411+ Assert . AreEqual ( 1 , obj2 . Items . Count ) ;
412+ Assert . AreEqual ( "new" , obj2 . Items [ 0 ] . P1 ) ;
413+ }
414+
415+ [ TestMethod ]
416+ public void EmptySettableCollectionPopulate_PreservesInstance ( )
417+ {
418+ var obj = new TestViewModelWithCollections {
419+ ViewModels = new ( ) { new ( ) { P1 = "new" } }
420+ } ;
421+ var json = Serialize ( obj , out var _ , isPostback : true ) ;
422+ var obj2 = new TestViewModelWithCollections ( ) ;
423+ var originalCollection = obj2 . ViewModels ;
424+
425+ var result = PopulateViewModel ( json , obj2 ) ;
426+
427+ Assert . AreSame ( originalCollection , result . ViewModels ) ;
428+ Assert . AreEqual ( 1 , result . ViewModels . Count ) ;
429+ Assert . AreEqual ( "new" , result . ViewModels [ 0 ] . P1 ) ;
430+ }
431+
402432 [ TestMethod ]
403433 public void SupportNestedCollectionPopulate ( )
404434 {
@@ -2061,6 +2091,12 @@ public class TestViewModelWithCollections
20612091 public List < string > Strings { get ; set ; } = new List < string > ( ) ;
20622092 }
20632093
2094+ public class TestViewModelWithGetOnlyCollection
2095+ {
2096+ [ Bind ( Direction . Both ) ]
2097+ public List < TestViewModelWithBind > Items { get ; } = new ( ) ;
2098+ }
2099+
20642100 public class TestViewModelWithNestedCollections
20652101 {
20662102 public List < List < TestViewModelWithBind > > Matrix { get ; set ; } = new List < List < TestViewModelWithBind > > ( ) ;
0 commit comments