/ / LINQ in Razor View Zepsuty dla VB - asp.net, asp.net-mvc, vb.net, linq, razor

LINQ in Razor View Zepsuty dla VB - asp.net, asp.net-mvc, vb.net, linq, razor

Próbuję użyć LINQ w widoku Razor (składnia VB) i mam następujące:

Model.TypeList.Select(Function(i) ...)

Syntaktycznie wszystko jest poprawne; instrukcja jest poprawna, a typy modeli są poprawne. Jednak pojawia się następujący błąd w czasie projektowania:

Error   12  "Select" is not a member of "System.Collections.Generic.List(Of TypeItem)"

Oczywiście Select jest metodą rozszerzenia LINQ, alenie jest to obsługiwane w moim widoku, mimo że odwołanie DLL istnieje, a ja dodałem je jako przestrzeń nazw do plików web.config ... Dlaczego ta podstawowa funkcja nie działa?

Korzystam z ASP.NET MVC 5.0 i zauważ, że używam niestandardowej klasy strony bazowej. EDYTOWAĆ: W widoku, którego używam, mam następujący import:

@Imports System.Linq
@Imports System.Collections.Generic

Mój główny plik web.config ma następującą postać:

<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>

Moje widoki wb.config ma następujące elementy:

 <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>

Uwaga: aplikacja działa, gdy działa, więc jest to błąd tylko w czasie projektowania.

Odpowiedzi:

1 dla odpowiedzi № 1

U góry pliku widoku znajdują się:

@Imports System.Linq

Aktualizacja:

Podczas dalszej kontroli System.Linq został poprawnie włączony. Zauważyłem jednak, że plik Web.config ma inne wartości dla targetFramework atrybut na <httpRuntime> i <compilation> elementy. Ustawienie obu na takie same, a mianowicie 4.5.1, naprawiono problem.

<httpRuntime targetFramework="4.5.1" />