这是我的控制器而我的部分视图是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);
}
}
}
答案 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) ;
}