繁体   English   中英

将模型中的项目传递到部分视图不起作用ASP.NET MVC 5

[英]Passing item in Model to partial view not working ASP.NET MVC 5

我在视图中有一个项目数组,并试图遍历该数组并将每个项目传递给局部视图,但是它抛出一个异常,表示我正在尝试将整个数组而不是仅将单个项目传递给部分视图。

我的主要观点:

@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[]数组中的元素为null,则父级的视图模型将传递给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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM