我正在使用Adam Freeman的"Pro ASP.NET MVC 5"一书,正在开发他正在使用的Sports Store Web应用程序。我试图在计算机商店中重做该示例,直到我需要向购物车添加额外功能("摘要"部分视图)为止,一切正常。
"摘要"部分视图在购物车控制器中定义:
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之前,让我告诉你,使用与上面相同的代码,体育商店示例工作正常。我已经尝试了许多方法来解决这个问题,我知道这已经在这里多次回答,但我只是不明白为什么它不起作用。此外,所有软件包都是更新。
您是否需要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})