2011-06-26 43 views
1

我想BindModel內得到模型,並將其轉換爲在指定的BindingContext一個類型創建:Asp.net MVC模型綁定從具體類型轉換類型爲使用反射

var reportFormTypeName = bindingContext.ValueProvider.GetValue(bindingContext.ModelName + ".TableInputModelTypeName"); 

Type reportFormType = Type.GetType("MyNameSpace.ViewModels." + reportFormTypeName.AttemptedValue); 

var model = (reportFormType)bindingContext.ModelMetadata.Model; 

這不會工作然而 - 我猜這是一個簡單的反思,我不能讓我疲憊的大腦理清 - 任何人都有任何線索?

:)

回答

1

您需要實例吧:

var reportFormTypeName = bindingContext.ValueProvider.GetValue(bindingContext.ModelName + ".TableInputModelTypeName"); 
Type reportFormType = Type.GetType("MyNameSpace.ViewModels." + reportFormTypeName.AttemptedValue); 
var model = Activator.CreateInstance(reportFormType); 
+0

問題wuith,那是我不噸;模型中有bindingContext.ModelMetadata.Model數據了 – iwayneo

+0

@iwayneo,你在做什麼? –

+0

基本上這個:http://stackoverflow.com/questions/6484972/viewmodel-with-listbaseclass-and-editor-templates – iwayneo

0

你不能做到這一點。您要求編譯器使用只在運行時才知道的類型,這根本不可能。如果您在編譯時知道該類型,只需轉換爲該類型即可。如果你不這樣做,你期望如何使用它?

+0

我不喜歡硬編碼和切換字符串,但也許這現在是最好的方式嗎? – iwayneo

+0

@iwayneo,也許有更好的辦法,但如果我們要幫助你,那麼你將不得不提出更具體的問題。你究竟想達到什麼目的?你的代碼現在如何? – svick