Visual Studio在我的Asp.net MVC视图中不显示Linq扩展

Rob*_*nik 2 asp.net-mvc configuration visual-studio-2010 linq-extensions

这让我感到困惑,我似乎无法让Visual Studio 2010在视图代码中识别System.Linq扩展方法.Intellisense不起作用,Visual Studio red强调无法识别的扩展方法.

这些是web.config最相关的部分,我认为这些部分与Visual Studio相关,可以识别System.Linq扩展方法.注释掉的行可能没有注释,但没有区别.

<compilation debug="true" batch="true">
    <assemblies>
        <!--
        <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        -->
        <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </assemblies>
</compilation>

<pages enableViewState="false">
    <namespaces>
        <add namespace="System.Collections.Generic"/>
        <add namespace="System.Linq"/>
        <add namespace="System.Web.Mvc"/>
        <add namespace="System.Web.Mvc.Html"/>
        <add namespace="System.Web.Routing"/>
        <add namespace="MyApp.Objects"/>
        <add namespace="MyApp.Web.General"/>
        <add namespace="MyApp.Web.Helpers"/>
    </namespaces>
</pages>
Run Code Online (Sandbox Code Playgroud)

我有一个看起来像这样的部分视图定义.同样的评论两行.没有注释没有区别:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IList<ToolbarItem>>" %>
<%--
<%@ Assembly Name="System.Core" %>
<%@ Import Namespace="System.Linq" %>
--%>
<%
    if (!this.Model.Any(ti => ti is ToolbarText && (ti as ToolbarText).MaximizeWidth))
    {
        this.Model.Add(new ToolbarText { MaximizeWidth = true });
    }
%>
Run Code Online (Sandbox Code Playgroud)

在这个特定的局部视图中,Any()即使System.CoreSystem.Linq命名空间中的程序集中定义了扩展方法,也无法识别它.

我错过了哪些配置设置?似乎Visual Studio无法System.Core在程序集中看到程序集枚举它的扩展方法System.Linq.

amu*_*rra 5

您需要将targetFramework的属性添加到web.config中的编译元素:

<system.web>
    <compilation debug="true" targetFramework="4.0">
Run Code Online (Sandbox Code Playgroud)

将其添加到您的web.config中,您应该在视图中重新获得intellisense.