2012-03-04 10 views
1

私は、剃刀エンジンのhtmlヘルパーを使用して動的プロパティのラベルを作成しようとしています。ビューモデルはではなく、が厳密に入力されています。ラムダ式についての私の知識はそれほど強くはないので、私はこの状況に適合する動的表現をどのように生成するのか不明です。エラーAn expression tree may not contain a dynamic operationをスロー----Html.LabelForの動的ラムダ

@model dynamic 
@{ 
string property = "FirstName"; 
} 

@Html.LabelFor(m => m.Entity.property) 

public class someModel<TEntity> where TEntity : class 
{ 
    public TEntity Entity { get; set; } 
}  

私はダイナミックな表現木を作りましたが、それが過度のものであるか必要であるかは不明でした。文字列を使用してEntityのプロパティにアクセスするにはどうすればよいですか?

エンティティにはさまざまな種類のクラスを使用できます。これらのクラスには、[Display(Name = "Some Name")]などのデータアノテーションが完全に定義されており、LabelForを使用しようとしている理由は、それらのデータアノテーションにアクセスするためです。

答えて

3

これは不可能です。ラムダ式や強く型付けされたヘルパーを動的な値で使うことはできません。あなたはこれらのヘルパーの弱い型付けされたバージョンを使用する必要があります:あなたは強く型付けされたビューモデルを使用して停止した後

@model dynamic 
@{ 
    string property = "FirstName"; 
} 

@Html.Label("property") 

はい、物事や習慣の多くは変更する必要があります。

+0

すべてのデータが技術的に存在するので、私はJavaScriptを使用して残りの作業を行うことを検討しました。強く型付けされたモデルからの素晴らしいサポートが欠けています。私は、基本的なもの以上のものを必要とするものではなく、無駄なビューのためにこの一般的なビューを作成しようとしています。私はコードが非常に似ている意見に疲れています。 –