我在视图中有一个项目数组,并试图遍历该数组并将每个项目传递给局部视图,但是它抛出一个异常,表示我正在尝试将整个数组而不是仅将单个项目传递给部分视图。
我的主要观点:
@model Product[]
@foreach (var item in Model)
{
@Html.Partial("_ProductDetail", item)
}
我的部分观点:
@model Product
<div>
@Model.Description
</div>
异常消息:
传递到字典中的模型项的类型为'Product []',但是此字典需要模型为'Product'的模型项。
我究竟做错了什么?
编辑控制器肯定是传递一个数组,虽然这是代码:
public ActionResult Category(string id)
{
var model = FakeDb.Products;
return View(model);
}
和FakeDb:
public static class FakeDb
{
public static Product[] Products { get; set; }
static FakeDb()
{
Products = new Product[2];
DateTime utcNow = DateTime.UtcNow;
ProductPic pp1 = new ProductPic { Filename = "71b.jpg", Default = true };
Product p1 = new Product { DateAdded = utcNow, Price = 395, Quantity = 1, Pics = new List<ProductPic> { pp1 }, Description = "5 ft. x 8 ft. Blue, Yellow" };
Products[0] = p1;
ProductPic pp2 = new ProductPic { Filename = "72b.jpg" };
Product p2 = new Product { DateAdded = utcNow.AddDays(-1), Quantity = 2, Pics = new List<ProductPic> { pp2 }, Description = "5 ft. x 8 ft. Blue, Green" };
}
}
当传递给的元素Partial
为null时,它将传递父视图Model
。因此,如果Product[]
array中的element为null,则将parent的视图模型传递给Partial
。
您可以检查要迭代的数组中的任何元素是否不存在null
或通过@Html.Partial("_ProductDetail", new ViewDataDictionary(item))
。
Foreach方法:
@model Product[]
@foreach (var item in Model)
{
if (item != null)
{
@Html.Partial("_ProductDetail", item)
}
}
ViewDataDictionary方法:
@Html.Partial("_ProductDetail", new ViewDataDictionary(item))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句