0

或者至少,他们没有做我所期望的。我的 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 做同样的事情。这是正确的行为吗?实现我正在寻找的行为的最佳方法是什么?

4

1 回答 1

0

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

我建议创建一个自定义元数据提供程序,该提供程序将与动态一起正常工作。尝试从此类继承 - http://msdn.microsoft.com/en-us/library/system.web.mvc.dataannotationsmodelmetadataprovider.aspx

于 2012-03-29T17:59:10.570 回答