【发布时间】:2017-06-18 18:55:07
【问题描述】:
我收到RuntimeBinderException 说System.Collections.Generic.List<string> 不包含Any 的定义。我在名为 ValidationFailures 的动态 ViewBag 对象中设置了一个 IEnumerable<string>。但是,在 Razor 页面调用中会引发此异常:
@if(ViewBag.ValidationFailures.Any())
{ ... }
IEnumerable 在返回视图之前添加到我的控制器中,如下所示:
ViewBag.ValidationFailures = TempData.ContainsKey("ValidationFailures")
? (IEnumerable<string>)TempData["ValidationFailures"]
: Enumerable.Empty<string>();
通常,我会将其归结为缺少对 Linq 的引用,但 Linq 包含在 View 文件夹中的 web.config 文件中:
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
<add namespace="System.Linq" />
<add namespace="myProject" />
</namespaces>
</pages>
</system.web.webPages.razor>
为了它,我尝试将@using System.Linq 也添加到视图的顶部,但这并没有改变行为。 Linq 查询在其他视图中运行良好,但这个单一视图给我带来了问题。
还有什么可能导致这个异常被抛出?
【问题讨论】:
标签: c# asp.net-mvc linq razor dynamic