2015-04-11 8 views
11

EDIT: Ho controllato e tentato molti degli altri problemi di assembly non referenziati trovati in SE, ma non ne ho trovato molti che si occupano di quello che dovrebbe essere un built-in assemblaggio (System.Collections.Generic.List<t>). Ciò rende difficile aggiungere o rimuovere manualmente il riferimento ecc.Errore di compilazione dell'assembly non referenziato nel ciclo foreach in Razor view

Sto provando a creare un PartialView da una risposta API. Ho confermato che la risposta è corretta e ben strutturata, i miei oggetti sono stati costruiti correttamente, ma quando viene generata la vista parziale, viene invece visualizzato un errore di compilazione.

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'. 

Ecco la vista Razor:

@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> 

E qui è la definizione della classe di dati:

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

    } 

Dove è stato un enum. Ho verificato in Debug che l'oggetto Model sia corretto e ben formato prima di essere passato a PartialView, ma invece di un layout corretto, ottengo la schermata Errore server e una risposta 500.

alla linea @foreach (Data metric in Model.Metrics)

codice d'azione per la completezza:

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

possibile duplicato di [Il tipo è definito in un assieme a cui non viene fatto riferimento, come trovare la causa?] (Http://stackoverflow.com/questions/20660999/the-type-is-defined-in-an -assemblaggio-non-referenziato-come-trovare-la-causa) –

+0

@ Bjørn-RogerKringsjå Ho aggiunto una modifica che spiega, ma penso che la sfida qui rispetto a molti altri "Not Referenced" SE le domande sono che hanno principalmente a che fare con a) ReSharper "non può risolvere il simbolo" errori (non usando R #), o b) librerie utente, a differenza della lista dei tipi incorporati Lista agc93

+0

Hai provato ad aggiungere '@ using System.Collections.Generic'? –

risposta

30

ho capito, ed era diabolicamente semplice. Non so ancora perché sia ​​necessario, ma l'aggiunta di un nuovo tag assembly a web.config sembra aver risolto questo problema. Il tag ho aggiunto era sotto il tag <compilation> e come segue:

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

semplice, ma ha risolto l'errore e la vista ora rende correttamente.

+0

Lavora per me. Grazie ! –

+1

Si noti che è necessario circondare l'annotazione '' ''. Ti piace questa: ' '' –