在控制器中找不到操作方法



我正在使用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})

最新更新