2017-06-06 5 views
0

Ich möchte zwei Felder verketten und alle Elemente einer Datenbankklasse auflisten. Warum kann ich mit der Listenmethode Entity framework und ASP.Net MVC so etwas nicht machen?Entity Framework 5: Verketten Sie zwei Felder

@foreach (var item in Model) { 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.FName + " " + item.Lname) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Address) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Email) 
     </td> 
     <td> 
      @Html.ActionLink("Edit", "Edit", new { id=item.CustomerID }) | 
      @Html.ActionLink("Accounts", "Accounts", new { id=item.CustomerID }) | 
      @Html.ActionLink("Delete", "Delete", new { id=item.CustomerID }) 
     </td> 
    </tr> 
} 

bekomme ich folgende Fehlermeldung:

Compilation Error 

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 

Compiler Error Message: CS1061: 'Customer' does not contain a definition for 'Lname' and no extension method 'Lname' accepting a first argument of type 'Customer' could be found (are you missing a using directive or an assembly reference?) 

Wie dies umgehen?

Antwort

1

Einfach fix:

@Html.DisplayFor(modelItem => item.FName) @Html.DisplayFor(modelItem => item.LName) 

Alternativ eine Eigenschaft zum Modell hinzufügen:

public string FullName { get { return FName + " " + LName; } } 

und dann tun:

@Html.DisplayFor(modelItem => item.FullName) 

Zusätzliche Anmerkung:

Bei der weiteren Inspektion Ihres Fehler, ich vermute, dass Sie Lname vertippt haben - vielleicht meinten Sie LName? Unabhängig davon funktioniert die Verwendung der Verkettung auf diese Weise nicht und führt stattdessen zu diesem Fehler:

Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.

Verwandte Themen