2012-03-29 33 views
0

或者至少,他們不會做我期待的。我的行動方法是這樣的:EditorForModel和DisplayForModel不能在Expando對象上工作

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

是的,這是正確的行爲。默認的元數據提供者(DataAnnotationsModelMetadataProvider)使用反射來獲取模型信息,這就是你得到這個結果的原因。

我會建議創建一個自定義的元數據提供程序,這個提供程序可以和動態模塊一起正常工作。嘗試從這個類繼承 - http://msdn.microsoft.com/en-us/library/system.web.mvc.dataannotationsmodelmetadataprovider.aspx

+0

謝謝。我很高興這不僅僅是我。但爲什麼默認的提供程序不像處理顯式正確的方式來處理動態? – 2012-03-29 18:34:19

+0

我想是因爲沒有人期待它被拋在動態物體上:-) – 2012-03-29 18:43:43

+0

夠公平的。謝謝。 – 2012-03-29 20:13:00

相關問題