2011-08-05 3 views
0

나는 다음과 같은 클래스가 :DefaultModelBinder 및 복합 형식의 컬렉션은

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; } 
} 

그리고 다음 컨트롤러 액션 :

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); 
} 

요청 사용 :

/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와 다른 동작 임). 이 예상되는 동작입니까? 그렇다면 요청에 포함되지 않은 복잡한 유형 (및 해당 속성)의 이전 값을 컬렉션 내에서 유지하는 것이 가장 좋은 방법입니까?

는 (I 비슷한 question 1 일 전 요청하지만 예는 내가이는 컬렉션에 일어나는 생각하지 않았 같은 문제를 다시 작성하지 않은 (사전 편집) 게시)

답변

관련 문제