2013-04-26 61 views
5

我有一个患者列表。 Patient类的其中一个属性是PatientId,它是一个int类型。我的列表被初始化,如:无法将lambda表达式转换为类型'object',因为它不是具有int的委托类型

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

当我访问PatientId在我看来的东西,如:

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

我得到一个错误: Cannot convert lambda expression to type 'object' because it is not a delegate type

+5

你有没有试过@ Html.DisplayFor(modelItem => modelItem.PatientId)? – 2013-04-26 18:19:53

+0

@Carko - 工作。 – Xaisoft 2013-04-26 18:21:04

回答

5

DisplayForModel实际使用显示模板来显示你的模型,通常不带参数调用。如果这是你的意图,那么你将不得不制作一个新的DisplayTemplate。对于任何感兴趣的人来说,这里是Phil Haack在Display Templates和DisplayForModelhttp://haacked.com/archive/2010/05/05/asp-net-mvc-tabular-display-template.aspx上的一个很好的教程。

但是,如果你只是想有该字段的标签,那么你应该只使用DisplayFor

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

好的,当我自动生成我的视图时,它将除了PatientId以外的所有内容都放入'@ Html.DisplayForModel(modelItem => modelItem.FirstName)'中。我仍然困惑为什么它不适合int。 – Xaisoft 2013-04-26 18:25:03

+0

好吧,我的坏我是一个白痴,我不知道为什么我看到DisplayForModel,它有DisplayFor的一切。新眼镜的时间。国际象棋怎么样? – Xaisoft 2013-04-26 18:26:39

+0

@ Xaisoft - 真的把我扔了一圈,我找不到为什么'DisplayForModel'是为整数自动生成的:P象棋是好的。 – 2013-04-26 18:28:12

3

@Html.DisplayFor()@Html.DisplayModelFor()之间的混淆。前者需要拉姆达。在你的情况,你可以使用@Html.DisplayFor(model => model.PatientId)

+0

谢谢,我看到DisplayForModel,但它实际上是DisplayFor。 – Xaisoft 2013-04-26 18:27:19

相关问题