我有一份患者名单。 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
答案 0 :(得分: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)
答案 1 :(得分:3)
您在@Html.DisplayFor()
和@Html.DisplayModelFor()
之间感到困惑。前者需要一个lambda。在您的情况下,您可以使用@Html.DisplayFor(model => model.PatientId)