2013-04-26 22 views
5

私は患者リストを持っています。 Patientクラスのプロパティの1つにint型のPatientIdがあります。私のようなもので私の見解でPatientIdにアクセスするとラムダ式がint型のデリゲート型ではないため 'オブジェクト'型に変換できません

List<Patient> = new List<Patient>() { new Patient { PatientId = 1, 
                FirstName = "Jane", 
                LastName = "Doe"}}; 

@Html.DisplayForModel(modelItem => modelItem.PatientId) //Error 

私はエラーを取得する: Cannot convert lambda expression to type 'object' because it is not a delegate type

+5

を使用することができますか? –

+0

@Carko - うまくいきました。 – Xaisoft

答えて

5

DisplayForModelは、実際にあなたを表示するための表示テンプレートを使用しています私のリストが同様に初期化されます通常はパラメータなしで呼び出されます。これがあなたが意図したものなら、新しいDisplayTemplateを作成する必要があります。興味のある方は、Phil HaackのディスプレイテンプレートとDisplayForModelhttp://haacked.com/archive/2010/05/05/asp-net-mvc-tabular-display-template.aspxの素晴らしいチュートリアルをご覧ください。あなただけの、そのフィールドのラベルを持っていると思った場合

しかし、あなたはちょうどあなたが@Html.DisplayFor()@Html.DisplayModelFor()の間で混乱してきましたDisplayFor

@Html.DisplayFor(modelItem => modelItem.PatientId) 
+0

OK、自分のビューを自動生成すると、PatientIdを除いてすべてが置かれるので、 '@Html.DisplayForModel(modelItem => modelItem.FirstName)'に配置されます。私はまだそれがintのために動作しない理由について混乱しています。 – Xaisoft

+0

OK、私の悪い私はばかです、なぜ私はDisplayForModelを見ていたのかわかりません、それはすべてDisplayForを持っています。新しい眼鏡の時間。チェスはどうやって来ますか? – Xaisoft

+0

@Xaisoft - 本当に私をループに投げつけましたが、なぜDisplayForModelがintsのために自動生成されたのか分かりませんでした:Pチェスは良いです。 –

3

を使用する必要があります。前者はラムダを取ります。あなたの場合は、@ Html.DisplayFor(modelItem => modelItem.PatientId)を試したことがあります@Html.DisplayFor(model => model.PatientId)

+0

ありがとう、私はDisplayForModelを見ていましたが、実際はDisplayForでした。 – Xaisoft

関連する問題