林克没有';不能在MVC视图中工作

本文关键字:MVC 视图 工作 不能 林克 | 更新日期: 2023-09-27 18:25:54

我在控制器中有一个列表

List<string> myList = new List<string>();
myList.Add(aString);
ViewBag.linkList = myList;

然后在视图中,我正在尝试进行

@ViewBag.linkList.First()

它给了我一个错误:"System.Collections.Generic.List"不包含"First"的定义

如果我做

@ViewBag.linkList[0]

它运行良好。

我已经在视图中放置了@using System.Linq。我是不是错过了什么?林克在视野内工作吗?

林克没有';不能在MVC视图中工作

ViewBag是动态的。CCD_ 3是对CCD_。扩展方法不适用于动态引用。

在调用First()之前,必须先将列表强制转换为IEnumerable<string>

@((ViewBag.linkList as IEnumerable<string>).First())

请注意,普通IEnumerable将不起作用,因为没有为其定义.First()

尝试将其强制转换为IEnumerable<T>,如下所示:

@((IEnumerable<string>)ViewBag).linkList.First()

或至List<string>:

@((List<string>)ViewBag).linkList.First()

ViewBag是一个dynamic对象。。。更具体地,ExpandoObject。我猜动态绑定器很难识别原始类型。

您应该通过ViewModel将列表传递到视图中。以最简单的形式将列表从控制器传递到视图中,例如return View(myList);

在视图中,在页面顶部添加@model = List<string>。然后可以使用Model.First()模型。First()获取所需项目。

ViewModel可以创建为类或结构,也可以突出简单的数据类型,但好处是它们在进入视图时是强类型的。