2016-06-19 5 views
-1

Nach Ausführung der Anwendung, erhalte ich dieDas Modellelement in das Wörterbuch übergibt vom Typ ist, aber dieses Wörterbuch erfordert ein Modell Artikel vom Typ ‚System.Collections.Generic.IEnumerable`1 []‘

The model item passed into the dictionary is of type 'MvcWcfApplication.ServiceReference1.StudentDetail[]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[MvcWcfApplication.ServiceReference1.ServiceClient].

Im Hinblick

@model IEnumerable<MvcWcfApplication.ServiceReference1.ServiceClient> 
.... 
<table> 
    <tr> 
     <th></th> 
    </tr> 
    @foreach (var item in Model) 
    { 
     <tr> 
      <td> 
       @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) | 
       @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) | 
       @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ }) 
      </td> 
     </tr> 
    } 
</table> 

DbController.cs

public class DbController : Controller 
{ 
    public ActionResult Index() 
    { 
     ServiceReference1.ServiceClient obj = new ServiceReference1.ServiceClient(); 
     return View(obj.GetStudents()); 
    } 
} 

Mein iService.cs

// NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService" in both code and config file together. 
[ServiceContract] 
public interface IService 
{ 
    [OperationContract] 
    List<StudentDetail> GetStudents(); 
+1

Die Fehlermeldung ist selbsterklärend. Sie rufen einen Service auf, der 'List zurückgibt und übergibt ihn an eine View, die 'IEnumerable ' erwartet - 'StudentDetail' ist ** nicht **' ServiceClient' –

+0

Versuchen Sie' IEnumerable ‘zu 'IEnumerable ' – llouk

+0

New Fehler Compiler-Fehlermeldung: CS0426: der Typname 'StudentDetail' existiert nicht in der Art 'MvcWcfApplication.ServiceReference1.ServiceClient – Ollivander

Antwort

0

Versuchen Sie die folgenden Änderungen.

public ActionResult Index() 
    { 
    ServiceReference1.ServiceClient obj = new ServiceReference1.ServiceClient(); 
    return View(obj.GetStudents().ToList()); 
    } 

Ändern Sie die Ansicht wie folgt.

@model IEnumerable<MvcWcfApplication.ServiceReference1.ServiceClient.StudentDetail> 

bearbeiten

@model IEnumerable<MvcWcfApplication.ServiceReference1.StudentDetail> 

Anzeige Students

Sie müssen die Werte der Schüler Eigenschaften in Ihrer StudentDetail Klasse so etwas wie "item.StudentName" drucken. StudentName ist eine Eigenschaft in Ihrer Klasse.

<table> 
    <tr> 
     <th></th> 
    </tr> 
    @foreach (var item in Model) 
    { 
     <tr> 
      <td> item.StudentName </td> 
      <td> 
       @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) | 
       @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) | 
       @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ }) 
      </td> 
     </tr> 
    } 
</table> 
+0

I' versucht, aber es funktioniert nicht erkenne mein "StudentDetail"; gibt mir die verzerrte Linie. – Ollivander

+0

@ Ollivander Versuchen Sie, die Ansicht erneut zu schließen und zu öffnen. Intellisense funktioniert nicht immer beim Importieren von Namespaces in der Ansicht. Es sollte kompiliert und ausgeführt werden. –

+0

Neuer Fehler: Compiler-Fehlermeldung: CS0426: Der Typname 'StudentDetail' existiert nicht im Typ 'MvcWcfApplication.ServiceReference1.ServiceClient' – Ollivander

Verwandte Themen