【问题标题】:List error key is not defined列表错误键未定义
【发布时间】:2017-05-01 19:29:15
【问题描述】:

我在 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它会给我“软件”。

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

【问题讨论】:

  • 永远不要使用这个ViewBag等的另一个原因。人。除了页面标题之外的任何东西。强类型模型 FTW。
  • 因此,如果它是 List,则没有属性 KeyKey 是当你使用 Dictionary
  • 感谢您的回答。我对 Asp.Net 很陌生,你会怎么做? @UweKeim
  • 您是要获取列表的值还是索引号?你需要钥匙做什么?
  • 查看截图。我可以在控制器中访问 .Key 值,但不能在视图中访问。

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


【解决方案1】:

您可以创建一个 ViewModel 来解决这个问题。

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

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

然后创建一个以MyViewModel 为模型的强类型视图。你可以通过在你的视图文件顶部添加这个来做到这一点:

@model {YourModelNameSpace}.MyViewModel

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

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

return View("YourViewName",myVm);

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2019-12-14
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多