我正在使用MVC5并尝试制作一个简单的列表。我使用了scaffolding,它在Controller中创建了IQueryable模型,在View中创建了IEnumerable。我试图将视图更改为IQueryable,但该视图会在'类型或命名空间上产生编译错误' IQueryable'找不到(你错过了使用指令或汇编引用吗?)'
<!-- Index.cshtml -->
@using System.Linq <!-- flags as 'previously appears in namespace' -->
@model IEnumerable<MyTableName> <!-- compiles and displays -->
@model IQueryable<MyTableName> <!-- doesn't compile, throws exception -->
我所有的项目都是4.5.2。我是MVC / EF的新手。我在我的网络应用程序和我的数据项目中引用System.Core.dll。
当我跑步时,我得到以下例外:错误CS1061:&#39; IQueryable&#39;不包含&#39; MyTableName&#39;的定义没有扩展方法&#39; MyTableName&#39;接受第一个类型&#39; IQueryable&#39;可以找到(你错过了使用指令或程序集引用吗?)
我想要IQueryable因为1)有很多数据和2)我将使用Infragistics控件(当前不在页面中)。我想只获取我需要的数据。 (我是Infragistics的新手,但所有Infragistics参考都不在页面内。)
有什么建议吗?谢谢!
答案 0 :(得分:0)
在VIEWS\web.config
(不是根目录中的web.config)中,将名称空间System.Linq
添加到以下部分:
<configuration>
...
<system.web.webPages.razor>
...
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Linq" />
答案 1 :(得分:0)
您希望在视图中使用IEnumerable,因为它会使IQueryable对象被执行。
来自documentation: “IQueryable接口继承IEnumerable接口,因此如果它表示查询,则可以枚举该查询的结果。枚举导致与IQueryable对象关联的表达式树被执行。”