或者至少,他们没有做我期待的事情。我的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完成同样的事情。这是正确的行为,以及实施我正在寻找的行为的最佳方式是什么?
答案 0 :(得分:0)
是的,这是正确的行为。默认元数据提供程序(DataAnnotationsModelMetadataProvider)使用反射来获取模型信息,这就是获得此结果的原因。
我建议创建一个可以正常运行动态的自定义元数据提供程序。尝试继承此类 - http://msdn.microsoft.com/en-us/library/system.web.mvc.dataannotationsmodelmetadataprovider.aspx。