2013-04-26 26 views
5

Ich habe eine Liste von Patienten. Eine der Eigenschaften der Patientenklasse ist PatientId, was ein int ist. Meine Liste ist wie initialisiert:Kann Lambda-Ausdruck nicht in Typ "Objekt" konvertieren, weil es kein Delegattyp mit einem Int

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

Als ich Patienten_ID meiner Meinung nach Zugang mit so etwas wie:

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

ich einen Fehler: Cannot convert lambda expression to type 'object' because it is not a delegate type

+5

haben Sie versucht @ Html.DisplayFor (ModelItem => ModelItem.PatientId)? –

+0

@Carko - Das hat funktioniert. – Xaisoft

Antwort

5

DisplayForModel tatsächlich verwendet Display-Vorlagen Ihre anzuzeigen Modell und wird normalerweise ohne Parameter aufgerufen. Wenn dies beabsichtigt ist, müssen Sie ein neues DisplayTemplate erstellen. Für alle Interessierten gibt es hier ein schönes Tutorial von Phil Haack zu Display Templates und DisplayForModel: http://haacked.com/archive/2010/05/05/asp-net-mvc-tabular-display-template.aspx.

Wenn Sie jedoch nur ein Etikett für das Feld haben wollte, dann verwenden Sie sollten nur DisplayFor

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

OK, wenn ich meine Ansicht automatisch generierte, fügte sie alles außer PatientId ein, also legte sie @Html.DisplayForModel (ModelItem => ModelItem.FirstName) 'ein. Ich bin immer noch verwirrt darüber, warum es nicht für Int funktioniert. – Xaisoft

+0

OK, mein Schlechter Ich bin ein Idiot, ich weiß nicht, warum ich DisplayForModel sah, es hat DisplayFor auf alles. Zeit für neue Brillen. Wie kommt das Schach? – Xaisoft

+0

@Xaisoft - Hat mich wirklich für eine Schleife geworfen, ich konnte nicht herausfinden, warum 'DisplayForModel' für Ints automatisch generiert wurde: P Das Schachspiel ist gut. –

3

Sie zwischen @Html.DisplayFor() und @Html.DisplayModelFor() verwirrt haben. Der ehemalige nimmt ein Lambda auf. In Ihrem Fall könnten Sie verwenden @Html.DisplayFor(model => model.PatientId)

+0

Danke, ich sah DisplayForModel, aber es war tatsächlich DisplayFor. – Xaisoft

Verwandte Themen