2017-05-01 11 views
0

Ich habe diese Liste in meinem ViewController in Asp.Net.Listenfehlerschlüssel ist nicht definiert

var Line1 = Skills.GroupBy(x => x.Line1).ToList(); 

Dieser Code gibt mir dieses Ergebnis:

[0] -> Key | "Software" 
[1] -> Key | "Consulting" 
[2] -> Key | "Hardware" 

Wenn ich versuche, diesen Code in meiner Ansicht zuzugreifen, funktioniert es nicht.

@foreach (var item in ViewBag.Line1) 
{ 
    var test = item.Key; 
} 

Es heißt "Schlüssel ist nicht definiert". Warum das?

PS: Ich speichere die Liste in ViewBag.Line1 in meinem Controller.

Dies ist in der Steuerung. Wenn ich Line1[0].Key eintippe gibt es mir "Software". enter image description here

Aber wenn ich item.Key es gebe mir den oben genannten Fehler.

enter image description here

+0

Ein weiterer Grund, niemals diesen 'ViewBag' zu verwenden. al. Sachen für etwas anderes als den Titel der Seite. Stark typisierte Modelle FTW. –

+0

Wenn es also eine 'List' ist, dann gibt es keine Eigenschaft' Key'. 'Key' ist, wenn Sie' Dictionary' verwenden –

+0

Danke für Ihre Antwort. Ich bin ziemlich neu in Asp.Net, wie würdest du das machen? @UweKeim – Anokrize

Antwort

0

können Sie ein Ansichtsmodell erstellen dieses Problem zu lösen.

Erstellen Sie einfach eine Klasse, die Ihre Line1 Eigenschaft halten,

public class MyViewModel 
{ 
    public List<IGrouping<string,Skill>> Line1{ get; set; } 
} 

Dann eine stark typisierte Ansicht mit MyViewModel als Modell erstellen. Sie können dies tun, indem nur diese Ihre Ansicht Datei oben hinzufügen:

@model {YourModelNameSpace}.MyViewModel 

dann die Daten aus der Steuerung zur Ansicht durch das Ansichtsmodell passieren, wie folgt aus:

var myVm = new MyViewModel(); 
myVm.Line1 = Skills.GroupBy(x => x.Line1).ToList(); 

return View("YourViewName",myVm); 

this helps !