2015-04-11 4 views
11

EDIT: Ich habe überprüft und versucht eine Menge der anderen Assembly nicht referenzierte Probleme auf SE gefunden, aber ich habe nicht viele finden, was ein eingebaut sein sollte Montage (System.Collections.Generic.List<t>). Dies macht es schwierig, die Referenz manuell hinzuzufügen oder zu entfernen.Assembly Nicht referenziert Kompilierung Fehler in Foreach-Schleife in Razor Ansicht

Ich versuche, eine PartialView von einer API-Antwort zu erstellen. Ich habe bestätigt, dass die Antwort korrekt und wohlgeformt ist, meine Objekte werden korrekt erstellt, aber wenn ich die Teilansicht erzeuge, wird stattdessen ein Kompilierungsfehler angezeigt. Hier

Compiler Error Message: CS0012: The type 'System.Collections.Generic.List`1<T0>' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. 

ist die Razor Ansicht:

@using OpsComponent 
@model OpsComponent.ComponentData 

<div class="row"> 
    <div class="col-md-6"> 
     <ul class="list-group"> 
      @foreach (Data metric in Model.Metrics) 
      { 
       <li class="list-group-item"> 
        <span class="badge">@metric.Value</span> 
        @metric.Key<br/> 
       </li> 
      } 

     </ul> 
    </div> 
</div> 

Und hier ist die Datenklassendefinition:

public class Data 
    { 
     public string Key { get; set; } 
     public string Value { get; set; } 
     public string Source { get; set; } 
     public Status Status { get; set; } 

    } 

Wo-Status eine Enumeration ist. Ich habe in Debugging eingecheckt, dass das Model-Objekt korrekt und wohlgeformt ist, bevor es an das PartialView übergeben wird, aber anstelle eines korrekten Layouts erhalte ich den Serverfehlerbildschirm und eine 500-Antwort.

an der Linie @foreach (Data metric in Model.Metrics)

Aktionscode auf Vollständigkeit:

public ActionResult ComponentDetail(string id) 
     { 
      var data = Client.GetComponentData(id.DecodeBase64ToString()); 
      var partialViewResult = PartialView("_ComponentDetail", data); 
      return partialViewResult; 
     } 
+0

mögliche Duplikate von [Der Typ ist in einer Baugruppe definiert, die nicht referenziert ist, wie die Ursache gefunden wird?] (Http://stackoverflow.com/questions/20660999/the-type-is-defined-in-an- - Assembly-das-ist-nicht-referenziert-wie-zu-finden-die-Ursache) –

+0

@ Bjørn-RogerKringsjå Ich habe eine Bearbeitung erklärt, aber ich denke, die Herausforderung hier im Vergleich zu den vielen anderen "Nicht referenzierten" SE Fragen sind, dass sie in erster Linie entweder mit a) ReSharper "kann nicht lösen Symbol" -Fehler (nicht mit R #), oder b) Benutzerbibliotheken, im Gegensatz zu integrierten Typenliste Liste agc93

+0

Haben Sie versuchen, '@ hinzufügen using System.Collections.Generic'? –

Antwort

30

Ich habe es herausgefunden, und es war teuflisch einfach. Ich weiß immer noch nicht, warum dies notwendig ist, aber das Hinzufügen eines neuen assembly Tags zu web.config scheint dieses Problem gelöst zu haben. Der Tag fügte ich war unter dem <compilation> Tag und wie folgt:

<assemblies> 
    <add assembly="System.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
</assemblies> 

Einfach, aber hat den Fehler und die Ansicht jetzt macht richtig aufgelöst.

+0

Arbeit für mich. Danke ! –

+1

Beachten Sie, dass Sie die Anmerkung '' mit '' umgeben müssen. So: ' '' –