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

Xai*_*oft 5 c# asp.net-mvc-4

我有一份病人名单.Patient类的一个属性是PatientId,它是一个int.我的列表初始化如下:

List<Patient> = new List<Patient>() { new Patient { PatientId = 1, 
                                                    FirstName = "Jane", 
                                                    LastName = "Doe"}};
Run Code Online (Sandbox Code Playgroud)

当我在视图中访问PatientId时,例如:

@Html.DisplayForModel(modelItem => modelItem.PatientId) //Error
Run Code Online (Sandbox Code Playgroud)

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

Tra*_*s J 5

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

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

@Html.DisplayFor(modelItem => modelItem.PatientId)
Run Code Online (Sandbox Code Playgroud)