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 일 전 요청하지만 예는 내가이는 컬렉션에 일어나는 생각하지 않았 같은 문제를 다시 작성하지 않은 (사전 편집) 게시)