如何在Home控制器中调用子操作

时间:2014-06-26 13:40:09

标签: c# asp.net-mvc-4

这是我的控制器而我的部分视图是ProducDetails,当我在默认的Home控制器中调用子操作方法时,就像这样@ Html.Action(“DisplayProduct”,产品),我觉得它无法理解? 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("ProductDetails", product);
   }
}

}

1 个答案:

答案 0 :(得分:1)

Html.Action期望在第二个参数处具有路由值,而不是您的自定义模型。这就是为什么如果您立即致电@Html.Action("DisplayProduct", product),您将无法收到产品对象的原因。

如果你想克服它,你需要在调用Html.Action时发送路由值而不是你的对象。您可以将此示例与匿名对象一起使用:

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

编辑:

如果您正在做任何事情,只是返回&#34; ProductDetails&#34; 查看您的操作,为什么不立即使用Html.RenderPartial代替使用Html.Action

@{
    Html.RenderPartial("ProductDetails", product) ; 
}