我正在使用Adam Freeman撰写的“Pro ASP.NET MVC 5”一书,他正在使用他正在使用的体育商店Web应用程序。我尝试将该示例重做到计算机商店中,一切正常,直到我需要向购物车添加额外功能时(“摘要”部分视图)。
'摘要'PartialView在购物车控制器中定义:
public PartialViewResult Summary(Cart cart)
{
return PartialView(cart);
}
摘要视图:
@model ComputerStore.Domain.Entities.Cart
@{
ViewBag.Title = "Summary";
}
<div class="navbar-right">
@Html.ActionLink("Checkout", "Index", "Cart",
new { returnUrl = Request.Url.PathAndQuery},
new { @class = "btn btn-default navbar-btn"})
</div>
<div class="navbar-text navbar-right">
<b>Your cart:</b>
@Model.Lines.Sum(x => x.Quantity) item(s),
@Model.CaluclateTotalValue().ToString("c")
</div>
当然,在_Layout.cshtml文件中,我调用了Action方法:
@Html.Action("Summary", "Cart")
当我启动Web应用程序时,出现以下错误:
-A public action method 'Summary' was not found on controller 'ComputerStore.WebUI.Controllers.CartController'.
现在,在我们提到HttpPost和HttpGet之前,让我告诉您,使用与上面相同的代码,Sports Store示例工作正常。我已经尝试了很多方法来解决这个问题,我知道这已经多次回答了,但我不明白为什么它不起作用。此外,所有包都是更新。
答案 0 :(得分:2)
您需要Summary
的参数。
请改为尝试:
[HttpGet]
public PartialViewResult Summary()
{
var cart = new Cart();
//Do something with cart to load the data.
return PartialView(cart);
}
如果您想将参数传递给Summary
,您可以执行以下操作:
@Html.Action("Summary", "Cart", new {cart = someExistingCartObject})