Asp.net mvc 3 System.Data.Objects.DataClasses.EntityCollection不包含';单个';
一些背景信息,我正在使用MVC3 w/EF&db-first方法,以及Razor模板。我将一个视图模型传递给一个视图,该视图模型有两个不同的obj集合,我使用其中一个来填充webgrid(wgSettings)作为其源参数。下面是我试图获取相关行的一些详细信息的代码。 细节: MyInfo是viewmodel中的字典, item是webgrid用于填充行的匿名行对象 item.Value.Value是我要从字典中获取的对象的id字段的值 MySettings是System.Data.Objects.DataClasses.EntityCollection,因此,我可以使用Single()、FirstOrDefault()等扩展方法 使用quick watch,我能够导航对象并查看预期的值,但是在调试和访问view@runtime时,我遇到以下错误 在线: “@Model.MyInfo[Guid.Parse(item.Value.Value)].MySettings.Single().Value” 调试器在说 “System.Data.Objects.DataClasses.EntityCollection”不包含“Single”的定义,但当我快速观察它时,我得到了值 下面是代码Asp.net mvc 3 System.Data.Objects.DataClasses.EntityCollection不包含';单个';,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,一些背景信息,我正在使用MVC3 w/EF&db-first方法,以及Razor模板。我将一个视图模型传递给一个视图,该视图模型有两个不同的obj集合,我使用其中一个来填充webgrid(wgSettings)作为其源参数。下面是我试图获取相关行的一些详细信息的代码。 细节: MyInfo是viewmodel中的字典, item是webgrid用于填充行的匿名行对象 item.Value.Value是我要从字典中获取的对象的id字段的值 MySettings是System.Data.Object
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>
wgSettings.Column(标题:“值”,列名:“值”,canSort:true,格式:
@
@如果(item.Value.Type==“Guid”&&item.Value.Value!=null){
@Model.MyInfo[Guid.Parse(item.Value.Value)].MySettings.Single().Value
}
如果(item.Value.Type==“Boolean”){
@项目价值
}
否则{
@项目价值
}
Linq扩展方法不在范围内,您需要将其添加到顶部(或者可以添加到web.config)
或在“视图”文件夹的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>
:-\n相同的错误…我尝试了两种甚至组合的方法,但仍然抛出相同的错误…但我发现发生了一些有趣的事情,使我认为这不是名称空间问题…我替换了一些有趣的事情,使我认为这不是名称空间问题…我替换了@Model.MyInfo[Guid.Parse(item.Value.Value)].MySettings.Single().Value和@Model.MyInfo[Guid.Parse(“1234568-abc3-1234-1234-123456789abc”)].MySettings.Single().Value,我得到了我的结果,这让我相信行中的项对象没有被正确解析…导致相应的对象没有初始化为EntityCollectionObject…有点修复了它,我最后做的是将guid抓取到一个字符串中,在我需要使用它的地方上方几行:@{string itemGuid=item.Value.Value;}然后@Model.MyInfo[Guid.Parse(itemGuid)].MySettings.Single().Value给我的值没有错误。。。
<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>