IEnumerable可以工作,但找不到类型或命名空间IQueryable-MVC 5
本文关键字:类型 命名空间 IQueryable-MVC 找不到 工作 IEnumerable | 更新日期: 2023-09-27 18:19:52
我正在使用MVC5并尝试制作一个简单的列表。我使用了脚手架,它在控制器中创建了IQueryable模型,在视图中创建了IEnumerable模型。我正试图将视图更改为IQueryable,但该视图在"Type"或"namespace"上出现编译错误。找不到"IQueryaable"(您是否缺少using指令或程序集引用?)""
<!-- 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的新手。我在我的web应用程序和数据项目中都引用了System.Core.dll。
当我运行时,我得到以下异常:错误CS1061:"IQueryable"不包含"MyTableName"的定义,并且找不到接受"IQueriable"类型的第一个参数的扩展方法"MyTableName"(是否缺少using指令或程序集引用?)
我想要IQueryable,因为1)有很多数据,2)我将使用Infrastics控件(目前不在页面中)。我只想得到我需要的数据。(我是Infrastics的新手,但所有Infrastics参考资料都不在页面上。)
有什么建议吗?谢谢
在VIEWS'web.config
(而不是根目录中的web.config)中,将命名空间System.Linq
添加到以下部分:
<configuration>
...
<system.web.webPages.razor>
...
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Linq" />
您希望在视图中使用IEnumerable,因为它使IQueryable对象得以执行。
根据文档:"IQueryable接口继承了IEnumerable接口,因此如果它表示查询,则可以枚举该查询的结果。枚举会导致执行与IQueryaable对象关联的表达式树。"