如何在Home控制器中调用子操作View称为index

时间:2014-06-27 07:03:59

标签: c# asp.net-mvc

我有一个名为Product的控制器和一个名为Product details的Partial View我想调用一个 在默认家庭控制器的索引视图中的子操作,这是我尝试过的,模型在视图中返回为null。

这是我的产品控制器 在这里ids我在视图中如何调用子动作。

@foreach (var product in Model)
{
  Html.Action("DisplayProduct", new { product.Id, product.Name, product.Description, product.Price } ) ;
}

public class ProductController : Controller
{
    //
    // GET: /Product/

    public ActionResult Index()
    {
        List<Product> products = new List<Product>()
        {
            new Product { Id =1, Name ="Product 1", Description ="Description 1", Price = 10m},
            new Product { Id =2, Name ="Product 2", Description ="Description 2", Price = 20m},
            new Product { Id =3, Name ="Product 3", Description ="Description 3", Price = 30m},
            new Product { Id =4, Name ="Product 4", Description ="Description 4", Price = 40m}
        };
        return View(products);
    }

    [ChildActionOnly]
    public ActionResult DisplayProduct(Product product)
    {

        return PartialView("DisplayProduct", product);
    }
}

1 个答案:

答案 0 :(得分:0)

您使用new { product.Id, product.Name, product.Description, product.Price }创建匿名类型 - 只需直接提供产品:

@foreach (var product in Model)
{
   @Html.Action("DisplayProduct", product)
}

如果您的子操作只返回部分,则根本不需要它,因为您可以直接调用部分:

@foreach (var product in Model)
{
   @Html.Partial("DisplayProduct", product)
}