无法将lambda表达式转换为类型“object”,因为它不是带有int的委托类型

时间:2013-04-26 18:16:34

标签: c# asp.net-mvc-4

我有一份患者名单。 Patient类的一个属性是PatientId,它是一个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

2 个答案:

答案 0 :(得分:5)

DisplayForModel实际上使用显示模板来显示模型,通常在没有参数的情况下调用。如果这是您的意图,那么您将不得不制作一个新的DisplayTemplate。对于任何有兴趣的人,这是Phil Haack关于展示广告模板和DisplayForModelhttp://haacked.com/archive/2010/05/05/asp-net-mvc-tabular-display-template.aspx的精彩教程。

但是,如果您只想为该字段添加标签,那么您应该只使用DisplayFor

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

答案 1 :(得分:3)

您在@Html.DisplayFor()@Html.DisplayModelFor()之间感到困惑。前者需要一个lambda。在您的情况下,您可以使用@Html.DisplayFor(model => model.PatientId)