过去两天我一直在努力想出这个... ... 我的主模型包含“动态”类型的属性,如下所示:
public class WGTTestModel
{
private dynamic _oProp3 = null;
public WGTTestModel()
{
}
public int Prop1 { get; set; }
private string Prop2 = null;
public dynamic Prop3
{
get
{
if (_oProp3 == null)
{
// depending on other factors, this could return a different model
_oProp3 = new SubModel1();
}
return _oProp3 ;
}
set
{
_oProp3 = value;
}
}
}
SubModel1如下所示:
public class SubModel1
{
public SubModel1()
{
}
public int Prop1 { get; set; }
public string Prop2 { get; set; }
}
属性“WGTTestModel.Prop3”被传递到部分视图,如下所示:
@Html.Partial("~/MVCFrontEnd/Widgets/TESTING/Views/_PartialView.cshtml", (object)Model.Prop3)
请注意,我必须将强制转换添加到(对象),因为它不允许我传递“动态”类型。
问题:我在属性“SubModel1.Prop1”上设置的值&发布表单时,部分视图中的“SubModel1.Prop2”不会绑定。
我做的另一个测试是在我的“WGTTestModel”中将“Prop3”的类型从“dynamic”改为“SubModel1”。然后,当将模型传递到局部视图时,我能够将转换移除到对象。这一次一切都按预期工作,值正确绑定。
DefaultModelBinder无法绑定“动态”类型属性吗?如果是,是否有可能的解决方法?
任何帮助将不胜感激!