【发布时间】:2011-05-08 09:34:38
【问题描述】:
这让我感到困惑,我似乎无法让 Visual Studio 2010 识别视图代码中的 System.Linq 扩展方法。 Intellisense 不起作用,Visual Studio 红色下划线突出显示无法识别的扩展方法。
这些是 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>
我有一个看起来像这样的局部视图定义。同样的注释掉了两行。未注释没有区别:
<%@ 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 });
}
%>
在这个特定的局部视图中,Any() 扩展方法无法识别,即使它是在System.Linq 命名空间下的System.Core 程序集中定义的。
我缺少哪些配置设置? 似乎 Visual Studio 看不到 System.Core 程序集来枚举它在 System.Linq 命名空间中的扩展方法。
【问题讨论】:
-
this.Model是什么类型的?
-
@Jackson:开玩笑?您可以在 定义中看到...它的类型为
IList<ToolbarItem>。 -
不是在开玩笑 - 不习惯 ASP.Net-MVC / ASP.Net。
标签: asp.net-mvc visual-studio-2010 configuration linq-extensions