在过去的 2 天里,我一直在尝试解决这个问题......
我的主要模型包含一个“动态”类型的属性,如下所示:
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)
请注意,我必须将强制转换添加到 (object),因为它不允许我传递“动态”类型。
问题:我在部分视图中对属性“SubModel1.Prop1”和“SubModel1.Prop2”设置的值在发布表单时没有绑定。
我进行的另一个测试是在我的“WGTTestModel”中将“Prop3”的类型从“动态”更改为“SubModel1”。然后,在将模型传递到局部视图时,我能够移除对对象的强制转换。这次一切都按预期工作并且值正确绑定。
DefaultModelBinder 是否无法绑定“动态”类型属性?如果是这样,是否有任何可能的解决方法?
任何帮助将不胜感激!