2011-08-05 23 views
0

私は、次のクラスがあります。この要求を使用してDefaultModelBinderおよび複合型のコレクション

public ActionResult Index() 
{ 
    var model = new TestViewModel 
       { 
        List = new List<SubModel> { new SubModel{ComplexTypeOne = new ComplexType{Code = 1, Name = "One"}, StringOne = "String One"} }, 
        ComplexTypeTwo = new ComplexType{Code = 2, Name = "Two"}, 
        StringTwo = "String Two" 
       }; 

    if (TryUpdateModel(model)) {} 

    return View(model); 
} 

public class ComplexType 
{ 
    public long? Code { get; set; } 
    public string Name { get; set; } 
} 

public class TestViewModel 
{ 
    public List<SubModel> List { get; set; } 
    public ComplexType ComplexTypeTwo { get; set; } 
    public string StringTwo { get; set; } 
} 

public class SubModel 
{ 
    public ComplexType ComplexTypeOne { get; set; } 
    public string StringOne { get; set; } 
} 

そして、次のコントローラのアクションを

/Home/Index?List[0].StringOne=updated&StringTwo=updated 

は、この結果を与えます:

List[0].ComplexTypeOne: null 
List[0].StringOne: "updated" 
ComplexTypeTwo.Code: 2 
ComplexTypeTwo.Name: "Two" 
StringTwo: "updated" 

この結果、ComplexTypeOneはnullに設定されます(これはComplexTypeTwoとは異なる動作です)。これは予想される動作ですか?そうであれば、要求内に含まれていないコレクション内の複雑な型(およびそのプロパティ)の以前の値をどのように維持するのが最適でしょうか?

(私は似たquestion 2日前に尋ねたが、私は投稿の例(前編集)再作成していなかった問題で、私はこれを考え出していなかったとしてコレクションのみで発生)

答えて

関連する問題