用于VB的Razor View中的LINQ

时间:2014-06-27 13:53:28

标签: asp.net asp.net-mvc vb.net linq razor

我试图在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>

注意:该应用在运行时有效,因此这只是一个设计时错误。

1 个答案:

答案 0 :(得分:1)

在视图文件的顶部,包含:

@Imports System.Linq

<强>更新

进一步检查时,System.Linq已正确包含在内。但是,我注意到Web.config对targetFramework<httpRuntime>元素的<compilation>属性有不同的值。将两者设置为相同,即4.5.1,解决了问题。

<httpRuntime targetFramework="4.5.1" />