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的行爲不同)。這是預期的行爲?如果是這樣,如何最好地保持集合中未包含在請求中的複雜類型(及其屬性)的先前值?
(我問過類似的question 3天前,但例如我張貼(編輯前),因爲我還沒有想通這只是與收藏情況並沒有重新創建問題)