System.Data.Objects.DataClasses.EntityCollection不包含'Single'的定义

时间:2011-11-07 14:58:36

标签: asp.net-mvc-3 razor

一些背景信息,我正在使用MVC3 w / EF& db第一种方法,以及Razor模板。我将视图模型传递给视图,视图模型有几个不同的obj集合,我正在使用其中一个来填充webgrid(wgSettings)作为其源参数。下面是我试图获取有关相关行的详细信息的代码。 细节: MyInfo是viewmodel中的Dictionary, item是webgrid用于填充行的匿名行对象 item.Value.Value是我想要抓取的字典中对象的id字段的值 MySettings是一个System.Data.Objects.DataClasses.EntityCollection,因此,我可以使用像Single(),FirstOrDefault()等扩展方法。

使用快速监视我能够导航对象并查看我期望的值,但是在调试和访问view @ runtime时,我收到以下错误。

在线: “@ Model.MyInfo [Guid.Parse(item.Value.Value)。MySettings.Single()。值” 调试器说 'System.Data.Objects.DataClasses.EntityCollection'不包含'Single'的定义,但是当我快速观察它时,我正在获得价值。

以下是代码。

wgSettings.Column(header: "Value", columnName:"Value", canSort:true, format:  
        @<text>
        @if (item.Value.Type == "Guid" && item.Value.Value != null) {             

            @Model.MyInfo[Guid.Parse(item.Value.Value)].MySettings.Single().Value
        }
        else if (item.Value.Type == "Boolean") { 
            @item.Value.Value 
        }
        else {
            @item.Value.Value 
        }

        </text>

1 个答案:

答案 0 :(得分:2)

Linq扩展方法不在范围内,您需要将其添加到顶部(或者您可以添加到web.config)

@using System.Linq;

或者在views文件夹中的web.config中:

<system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
        <namespaces>
            <add namespace="System.Web.Mvc" />
            <add namespace="System.Web.Mvc.Ajax" />
            <add namespace="System.Web.Mvc.Html" />
            <add namespace="System.Web.Routing" />
            <add namespace="System.Linq" />
        </namespaces>
    </pages>
</system.web.webPages.razor>

针对不同命名空间的类似问题,请参阅此问题:

Using System.Data.Linq in a Razor view