如何将项目追加到绑定列表?

时间:2019-06-03 10:33:38

标签: c# asp.net-core razor-pages

我有以下型号:

class Order
{
    public List<Product> Products { get; set; }
}

class Products
{
    public int Price { get; set; }
}

在我的剃须刀页面中,我想遍历所有产品并将其添加到我的订单中,如下所示:

int i = 0;
foreach (Product p in AllProducts)
{
    <input asp-for="order.Products[i].Price">
    i++;
}

这在创建新订单时(当pf产品列表为空时)很好用,但是当我尝试编辑订单,并可能添加新产品或编辑现有产品时,我得到了{{1} }例外。 显然是因为Index was out of range.中的产品比订单的AllProducts列表中的产品更多。

有办法克服吗?

4 个答案:

答案 0 :(得分:0)

我们可以通过更新代码来完成。我认为已解决问题。问题出在foreach循环中。

  int i = 0;
  foreach (Product p in AllProducts)
 {
    <input asp-for="AllProducts[i].Price">
    i++;
  }

仍然,您正面临问题,请分享剃刀视图。

答案 1 :(得分:0)

仅在当前订单的最后一个索引之后循环:

int i = order.Products.Count();
foreach (Product p in AllProducts)
{
    <input asp-for="order.Products[i].Price">
    i++;
}

答案 2 :(得分:0)

从数据库获取订单进行编辑时,您还需要获取关联的产品。您可以使用包括来获取它们。有关更多详细信息,请参见here。获得产品后,您就可以使用产品列出商品,也可以使用AllProducts来添加不在列表中的商品

答案 3 :(得分:0)

在“编辑订单”页面上尝试以下修改:

 @for (int i = 0; i < Model.Order.Products.Count(); i++)
    {
        <input asp-for="Order.Products[i].Price">
    }