2017-04-19 2 views
-1

Im Voraus entschuldige ich mich, wenn ich etwas offensichtliches frage. Ich wechsle von regulären asp.net-Programmierung zu MVC und von vb zu C#. Es war in Ordnung, aber ich habe noch viel zu lernen.kann nicht implizit konvertieren Typ system.collections.generic.list

Ich erhalte die folgenden Fehler

kann nicht implizit Typ System.Collections.Generic.List < project.models.state konvertieren>> < project.state System.Collections.Generic.List. eine implizite Konvertierung vorhanden ist (möglicherweise fehlt eine Guss?)

das ist, was ich in meinem Controller

public ActionResult CityForm() 
    { 

     var states= _context.Departamentos.ToList(); 
     var viewModel = new CityFormViewModel 
     { 
      City= new City(), 
      States= states 
     }; 
     return View(); 
    } 

Mein Ansichtsmodell sieht wie folgt aus

public IEnumerable<State> States{ get; set; } 

    public City City{ get; set; } 

Ich habe sah in andere haben Post, die einen ähnlichen Fehler haben, aber es scheint, die Ursache ist etwas anderes als das, was ich habe. Ich habe diesen Ansatz zuvor in einer anderen Anwendung verwendet, und es hat gut funktioniert, was ich in diesem Fall anders gemacht habe, ist, dass ich ein ADO.NET-Entitätsdatenmodell hinzugefügt habe, das mit Telerik-Steuerelementen verwendet werden kann.

Ich habe auch bemerkt, dass in meiner anderen Anwendung, wenn ich die Variable in meinem Controller schweben ich folgende Meldung (zwischen ** ist, was ich mit der Maus über schweben):

States = **states** 
(local variable)List<State> states 

aber wenn ich an der gleichen Stelle in der Anwendung schweben, wo ich den Fehler erhalte ich eine andere Botschaft

States = **states** 
(local variable)List<Models.State> states 

wie Sie sehen können, ist mit Models Staat voran.

Ich schätze wirklich jede Hilfe, die ich bekommen kann. Vielen Dank.

+2

'project.models.state' zuzuordnen ist nicht' project.state' (sie sind in verschiedenen Baugruppen sind). Ihre Ansichtsmodelleigenschaft muss 'public IEnumerable States {get; einstellen; } '- das gleiche wie Ihre Abfrage zurückgibt (und mit' var' aufhören!) –

+1

Ich sehe kein Problem darin, wie er var verwendet. Er hätte den gleichen Compilerfehler bekommen, wenn er Var nicht benutzt hätte. Weil er var benutzt, muss er weniger Code reparieren. – bit2know

+0

@ bit2know Ich denke, das Problem mit 'var' ist in diesem Fall offensichtlich: es macht es schwieriger, Typ-Mismatches zu sehen. –

Antwort

0

Sie haben den gleichen Klassennamen von verschiedenen Standorten. Wenn Sie den Wert zuweisen möchten, achten Sie darauf, dass sie vom selben Typ sein müssen.

in Ihrem Fall müssen Sie entweder IEnumerable<project.state> oder IEnumerable<project.models.state> nicht nur project.state zu project.models.state

+0

Super, dass es getan hat, ich schätze deine Hilfe sehr. I – Stendor

+0

froh, dass ich helfen konnte –

Verwandte Themen