列表错误键未定义

时间:2017-05-01 19:29:15

标签: c# asp.net list model-view-controller

我在Asp.Net的ViewController中有这个列表。

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

这段代码给了我这个结果:

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

当我尝试在我的视图中访问此代码时,它不起作用。

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

它说“密钥未定义”。那是为什么?

PS:我将列表保存到控制器的ViewBag.Line1中。

这是在控制器中。如果我输入Line1[0].Key,它会给我“软件”。 enter image description here

但如果我输入item.Key,它会给我上面提到的错误。

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以创建 ViewModel 来解决此问题。

只需创建一个包含Line1属性的类

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

然后创建一个强类型视图,其中MyViewModel为模型。您可以通过在View文件的顶部添加它来执行此操作:

@model {YourModelNameSpace}.MyViewModel

然后通过ViewModel将数据从控制器传递到视图,如下所示:

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

return View("YourViewName",myVm);

希望这有帮助!