C#DefaultModelBinder不绑定“动态”类型的属性

时间:2017-09-22 02:49:34

标签: c# asp.net asp.net-mvc-4 model defaultmodelbinder

过去两天我一直在努力想出这个... ... 我的主模型包含“动态”类型的属性,如下所示:

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无法绑定“动态”类型属性吗?如果是,是否有可能的解决方法?

任何帮助将不胜感激!

0 个答案:

没有答案