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

时间:2015-03-09 19:03:26

标签: asp.net asp.net-mvc razor asp.net-mvc-5

我正在使用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示例工作正常。我已经尝试了很多方法来解决这个问题,我知道这已经多次回答了,但我不明白为什么它不起作用。此外,所有包都是更新。

1 个答案:

答案 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})