当前位置: 首页 > 编程语言 > C#

无法在网格中使用导航属性分享

时间:2023-04-11 02:11:47 C#

C#学习教程:无法在网格中使用导航属性例如我在网络中使用了以下代码:grid.Column("","test",item=>(item.ProductImages.First().Id)+(item.Price))但是我得到了错误:'System.Collections.Generic.HashSet'doesnotcontainadefinitionfor'First'我的总代码如下:@modelIEnumerable@usingSystem.Linq;@{vargrid=newWebGrid(来源:模型,rowsPerPage:5,ajaxUpdateContainerId:“divGrid”);}@grid.GetHtml(tableStyle:"gridStyle",headerStyle:"gridHeader",rowStyle:"gridRow",alternatingRowStyle:null,htmlAttributes:new{Id="divGrid"},columns:newWebGridColumn[]{grid.Column("ProductName","ProductName"),grid.Column("Price","Price"),grid.Column("Description","Description"),grid.Column("CategoryName","CategoryName",x=>x.Category.CategoryName),grid.Column("","test",item=>(item.ProductImages.First().Id)+(item.Price)),grid.Column("","",x=>Html.ActionLink("Edit","Edit",new{id=x.Id})),grid.Column("","",x=>Html.ActionLink("Details","详情",new{id=x.Id})),grid.Column("","",x=>Html.ActionLink("Delete","Delete",new{id=x.Id}))})这是我的搜索视图:@modelIEnumerable@usingSystem.Linq@{ViewBag.Title="Index";Layout="~/Views/Shared/_LayoutCategory.cshtml";}@Html.ActionLink("CreateNew","Create")@{Html.RenderPartial("_ProductTitle",Model);这是我发布的使用网络格式的RenderPartial:@modelIEnumerable@usingSystem.Linq@ViewBag.test@{vargrid=newWebGrid(source:Model,rowsPerPage:5,ajaxUpdateContainerId:"divGrid");}@grid.GetHtml(tableStyle:"gridStyle",headerStyle:"gridHeader",rowStyle:"gridRow",alternatingRowStyle:null,htmlAttributes:new{Id="divGrid"},columns:newWebGridColumn[]{grid.Column("ProductName","ProductName"),grid.Column("Price","Price"),grid.Column("Description","Description"),grid.Column("CategoryName","CategoryName",x=>x.Category.CategoryName),grid.Column("","test",item=>(int)(item.ProductImages.FirstOrDefault().Id)+(int)(item.Price)),网格。Column("","",x=>Html.ActionLink("Edit","Edit",new{id=x.Id})),grid.Column("","",x=>Html.ActionLink("Details","Details",new{id=x.Id})),grid.Column("","",x=>Html.ActionLink("Delete","Delete",new{id=x.Id}))})这是因为定义首次在System.Linq中可用因此,您应该在剃刀页面中使用System.Linq:@usingSystem.Linq;如果你在多个页面中使用Linq,你可以在web.config中添加System.Linq命名空间,这样你就不需要在每个页面中都使用上面的内容。您可以在以下配置中的web.config中添加命名空间:我从下面的代码中得到了我的问题的答案:我按照您的步骤测试了您的代码,并显示了相同的错误。所以我认为代码中的格式不能在webgrid中使用。所以我想到了另一种方法来满足你的需求:我们需要一个ViewModel来显示你想在View中显示的内容并在Controller中搜索第一项然后保存为ViewModel并将ViewModel传递给View,那么我们就不需要搜索了风光不再在这里,我将向您展示我的演示步骤。现在,我们有两个模型产品和数量,一个产品有很多数量。我们应该创建一个ViewModel。ViewModel.cs:publicclassViewModel{publicstringId{get;放;}公共字符串名称{得到;放;}公共字符串描述{得到;放;}publiclongquan{get;放;我们可以初始化一些数据并搜索Quantity的第一个值取决于Controller中的Product并分配给ViewModel。InventoryController.cs:publicclassInventoryController:ControllerpublicActionResultWebgridSample(){ObservableCollectioninventoryList=newObservableCollection();inventoryList.Add(newProduct{Id="P101",Name="Computer",Description="Alltypeofcomputers",quantity=newList{newQuantity{QUAN=100},newQuantity{QUAN=200},new数量{QUAN=300}}});inventoryList.Add(newProduct{Id="P102",Name="Laptop",Description="AllmodelsofLaptops",quantity=newList{newQuantity{QUAN=400},newQuantity{QUAN=500},new数量{QUAN=600}},});inventoryList.Add(newProduct{Id="P103",Name="Camera",Description="Hdcameras",quantity=newList{newQuantity{QUAN=700},newQuantity{QUAN=800},newQuantity{全=900}}});IEnumerablemodel=(fromsigininventoryListselectnewViewModel{Name=sig.Name,Description=sig.Description,quan=sig.quantity.FirstOrDefault(),}).ToList();返回视图(模型);}WecancalltheViewModelinwebgridwithoutusingFirst()WebgridSample.cshtml:Allcontentsharedusingnavigationpropertiesin,如果对你有用,需要了解更多C#学习教程,希望大家付费更多关注——@grid.GetHtml(tableStyle:"webGrid",headerStyle:"header",alternatingRowStyle:"alt",selectedRowStyle:"select",columns:grid.Columns(grid.Column("Id",),grid.Column("Name","Name"),grid.Column("Description","Description",style:"description"),grid.Column("Quantity","quan")))本文采集自上网,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: