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