2011-07-16 3 views
2

私はコンパイルと呼び出しによって表現の価値を下ろそうとしていますが、今までいくつかのエラーと成功はありません。署名を考えるこの式の値を取得する方法model => model.Name?

public static void TextEditorFor<TModel, TProperty>(this System.Web.Mvc.HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression) 
{ 
    var value = expression.Compile().Invoke(html.ViewData.Model);//problem that is value is null 

} 
+1

どのようなコードは、あなたが実行しようとしていますか?エラーは何ですか? –

+1

"しかし、私はいくつかのエラーが出ます" - 具体的にしてください。また、あなたのモデルインスタンスはどこから来ているのですか? –

+0

@Marc Gravell - 私の質問を更新 – Freshblood

答えて

2

の質問に適用されます)

、あなただけの必要なはずです。

return Convert.ToString(
    expression.Compile().Invoke(modelInstance) 
); 

絶対場合にも、式の検査によってこれを行うことができます必要です。

+0

しかし、nullをStringに変換する目的は何ですか? Modelがnullではないにもかかわらず、Invokeメソッドはnullを返します。 – Freshblood

+0

@FreshBloodあなたの元のメソッドシグネチャは 'string'を返しました。文字列を必要としない場合は、質問に入れてはいけません。つまり、null。 - .Nameがnullの場合(つまり、ラムダは自然にnullを返します)、nullを期待する必要があります。それ以外に何を期待しますか? –

+0

あなたは正しいです。 Modelプロパティがnullでした。なぜ結果はnullだったのですか?ありがとう – Freshblood