2012-03-29 1 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

감사합니다. 나는 단지 그것이 아닌 것을 기쁘게 생각합니다. 그렇다면 기본 공급자가 왜 분명히 올바른 방식으로 다이내믹을 처리하지 못합니까? –

+0

아무도 동적 객체에 던져 질 것으로 예상하지 않았기 때문에 :-) –

+0

충분합니다. 감사. –

관련 문제