2011-06-26 9 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

問題がありません。これはモデルに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

関連する問題