如何在视图页面中使用foreach

时间:2014-08-05 20:07:00

标签: c# asp.net-mvc razor view foreach

尝试将已确认订单的列表传递到供应商页面(使用断点检查列表正在过去),只是在使用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 我需要在顶部为列表声明一个变量,然后运行该

任何帮助表示赞赏。感谢

2 个答案:

答案 0 :(得分:1)

也许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放在那里,{}剃刀内的

期待所有代码 - 多行使用<text></text>一行使用@:

答案 1 :(得分:1)

您的视图将模型指定为IEnumerable<SupplierVM>。因此,要迭代订单,您首先必须遍历供应商:

@foreach (var supplier in Model)
{
    foreach (var order in supplier.allOrders)
    {
        ...
    }
}

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

@model BicycleShop.ViewModels.SupplierVM

然后,您可以直接迭代订单:

@foreach (var order in Model.allOrders)
{
    ...
}