gpt4 book ai didi

linq - ASP.NET MVC 2/.NET 4/Razor - 不能在 ViewModel 成员上使用 Any() 扩展方法

转载 作者:行者123 更新时间:2023-12-04 23:32:09 26 4
gpt4 key购买 nike

我正在尝试使用 ASP.NET MVC 3 Preview 1 中的 Razor ViewEngine,但在尝试使用 Any() 时遇到了问题。扩展方法。

这是我用来在控​​制器中设置属性的代码:

ViewModel.Comparisons = DB.Comparisons.Where(c => c.UserID == this.UserID).ToArray();

这是我尝试使用的 View 中的代码 Any() :
@if (!View.Comparisons.Any()) {
<tr>
<td>You haven't not started any comparisons yet. @Html.Action("Start a new comparison?", "create", "compare")</td>
</tr>
}

我得到一个异常(exception),说:
'System.Array' does not contain a definition for 'Any'

我试过添加 System.Linq命名空间到 pages\namespaces web.config 部分,并添加 @using System.Linq View 顶部的线,两者都没有区别。我需要做什么才能访问 LINQ 扩展方法?

更新:看起来这与它是动态对象的属性这一事实有关 - 如果我手动将其强制转换为 IList<T>,它会起作用。 .

最佳答案

不幸的是,您不能对声明为动态的值调用扩展方法。在这种情况下,ViewModel 返回动态值,因此编译器不知道类型,因此无法找到对扩展方法的调用。

我推荐以下之一:

  • 使用强类型 View 。这样,一旦支持,您还将在 Visual Studio 中获得完整的 Intellisense。
  • 将值显式转换为 IList,然后调用扩展方法。这样编译器就可以进行正确的映射。
  • 关于linq - ASP.NET MVC 2/.NET 4/Razor - 不能在 ViewModel 成员上使用 Any() 扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3535016/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com