我正在尝试使用 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 返回动态值,因此编译器不知道类型,因此无法找到对扩展方法的调用。
我推荐以下之一:
关于linq - ASP.NET MVC 2/.NET 4/Razor - 不能在 ViewModel 成员上使用 Any() 扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3535016/