我试图在Razor视图中使用LINQ(VB语法),我有以下内容:
Model.TypeList.Select(Function(i) ...)
从句法上讲,一切都是正确的;语句是正确的,模型类型定义正确。但是,我在设计时遇到了以下错误:
Error 12 'Select' is not a member of 'System.Collections.Generic.List(Of TypeItem)'
显然,Select是一个LINQ扩展方法,但我的视图中不支持它,即使DLL引用存在,我将它作为命名空间添加到web.config文件中...为什么这样基本功能不起作用?
我正在使用ASP.NET MVC 5.0,并注意我使用自定义基页类。 编辑:在我使用的视图中,我有以下导入:
@Imports System.Linq
@Imports System.Collections.Generic
我的根web.config文件包含以下内容:
<system.web>
<compilation debug="true" targetFramework="4.5.1" />
<httpRuntime targetFramework="4.5" />
<pages>
<namespaces>
<add namespace="System.Collections.Generic"/>
<add namespace="System.Linq"/>
<add namespace="System.Web.Helpers" />
<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.Web.WebPages" />
</namespaces>
</pages>
我的观点wb.config具有以下内容:
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="Custom.MvcViewPage">
<namespaces>
<add namespace="System.Collections.Generic"/>
<add namespace="System.Linq"/>
<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" />
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="Custom.MvcViewPage"
userControlBaseType="Custom.MvcViewUserControl">
<controls>
<add assembly="System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
注意:该应用在运行时有效,因此这只是一个设计时错误。
答案 0 :(得分:1)
在视图文件的顶部,包含:
@Imports System.Linq
<强>更新强>
进一步检查时,System.Linq
已正确包含在内。但是,我注意到Web.config对targetFramework
和<httpRuntime>
元素的<compilation>
属性有不同的值。将两者设置为相同,即4.5.1
,解决了问题。
<httpRuntime targetFramework="4.5.1" />