如何在视图页面中使用 foreach

Posted

技术标签:

【中文标题】如何在视图页面中使用 foreach【英文标题】:how to use a foreach in a view page 【发布时间】:2014-08-05 20:07:00 【问题描述】:

尝试将已确认订单的列表传递到供应商页面(使用断点检查列表已过去)只是在使用 foreach 在视图中显示列表时遇到问题。

//SupplierController  
 public ActionResult Index()
 
 BuyABicycle_Entities db1 = new BuyABicycle_Entities();

 IEnumerable<BicycleOrder> All_Orders = (from c in db1.BicycleOrders
                                                    where c.Id >= 1
                                                    select c).ToList();

  SupplierVM model = new SupplierVM  allOrders = All_Orders ;
  return View(model);



//SupplierVM
public class SupplierVM

  public IEnumerable<BicycleOrder> allOrders  get; set; 


Views/Supplier/Index
@model BicycleShop.ViewModels.SupplierVM

    @
        ViewBag.Title = "Supplier";
        //var orders = (IList<BicycleOrder>) Model.;
        // var orders = (List<BicycleOrder>) Model.Order);
    

    @using (html.BeginForm())
    
    <table>
        @foreach (var _Order in Model.allOrders)
         
           <text>
               <tr>
                  <td>@_Order.CustomerName</td>       
               </tr>
            </text>


    </table>
    <input type="submit" />

这会引发@foreach 错误(Model.allOrders 中的var _Order) 编译器错误消息:CS0012:类型“IdeaBlade.EntityModel.Entity”在未引用的程序集中定义。您必须添加对程序集“IdeaBlade.EntityModel, Version=6.1.7.0, Culture=neutral, PublicKeyToken=287b5094865421c0”的引用。

Foreach loop for tables in MVC4 我是否需要为顶部的列表声明一个变量,然后运行该变量

任何帮助表示赞赏。谢谢

【问题讨论】:

【参考方案1】:

您的视图将模型指定为IEnumerable&lt;SupplierVM&gt;。因此,要迭代订单,您首先必须迭代供应商:

@foreach (var supplier in Model)

    foreach (var order in supplier.allOrders)
    
        ...
    

但是,您似乎实际上并没有传递许多 SupplierVM 实例,而只是传递了一个。因此,您应该将视图的模型更改为:

@model BicycleShop.ViewModels.SupplierVM

然后,您可以直接遍历订单:

@foreach (var order in Model.allOrders)

    ...

【讨论】:

感谢克里斯的回复。是的,那是我的一个错误。供应商虚拟机只包含订单,只是为了保持整洁,无论如何尝试了你的建议,不幸的是它仍然无法更新主 Q。关于类型“IdeaBlade.EntityModel.Entity”的一些东西是在一个程序集中定义的未参考。如果你有更多的想法会很棒 这完全不相关。这是代码中某处的实际错误。即,您在某处引用了一个类,Entity 来自 IdeaBlade.EntityModel 命名空间,并且该命名空间在您的引用中不存在,或者命名空间不包含名为 Entity 的类。 啊,是的,当我应该在模型文件夹中填充类时,我正在使用实体框架中的表。再次感谢【参考方案2】:

也许 razor 混淆了 HTML 和代码:

试试这个:

    @foreach (var _Order in Model)
    
        <text>
        <tr>
            <td>@Html.TextBoxFor(x => x.allOrders)</td>
            <td>@_Order.allOrders</td>
            @<td>@Html.TextBoxFor(x => x.CustomerName, new  @readonly = true ) </td>
            @foreach(var item in _Order)
             
                 item.ItemProp <br />
             
        </tr>
        </text>
    

剃须刀里面期待它所有的代码,如果你想把 HTML 放在那里 - 多行使用&lt;text&gt;&lt;/text&gt; 一行使用@:

【讨论】:

很抱歉,这对它有 4 个错误都不起作用。我不确定我是否需要第二个 foreach 只是想弄清楚。该模型包含一个 BicycleOrders 列表 - allOrders。我想循环并输出每个订单“客户名称、客户地址、型号”等......所有这些都在每个 BicycleOrder 中找到

以上是关于如何在视图页面中使用 foreach的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SwiftUI 中使用 Foreach 视图?

如何在视图中使用 ForEach 将 Swift 5 数组索引偏移到某个数字?

SwiftUI 如何在新视图中链接 ForEach 索引和照片索引?

如何在 laravel 刀片视图中打破 foreach 循环?

如何在 JSP 页面的脚本标签中使用 <c:forEach>?

使用 ForEach 中的 SwiftUI 3.0 .swipeActions,您如何在将 ForEach 的输入参数传递给该视图时让一个动作转到另一个视图?