我有以下型号:
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
列表中的产品更多。
有办法克服吗?
答案 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">
}