EditorForModel和DisplayForModel不适用于Expando对象

时间:2012-03-29 16:14:57

标签: asp.net asp.net-mvc expando

或者至少,他们没有做我期待的事情。我的Action方法如下所示:

    Function Test() As ActionResult
        Dim model As Object = New ExpandoObject()
        model.FieldA = 123
        model.FieldB = "This is a string"
        model.FieldC = DateTime.Now

        Return View(model)
    End Function

并且视图如下所示:

@ModelType Object
@Html.DisplayForModel

如果模型是带有这些字段的真实对象,我希望它能产生同样的效果,但我得到了这个:

[FieldA, 123][FieldB, This is a string][FieldC, 3/29/2012 12:10:24 PM] 

EditorForModel完成同样的事情。这是正确的行为,以及实施我正在寻找的行为的最佳方式是什么?

1 个答案:

答案 0 :(得分:0)

是的,这是正确的行为。默认元数据提供程序(DataAnnotationsModelMetadataProvider)使用反射来获取模型信息,这就是获得此结果的原因。

我建议创建一个可以正常运行动态的自定义元数据提供程序。尝试继承此类 - http://msdn.microsoft.com/en-us/library/system.web.mvc.dataannotationsmodelmetadataprovider.aspx