3

我将 MVC2 与 VS2008 一起使用,并在视图 ~/Shared/Site.Master 中使用以下代码:

<ul id="navlist">
            <li class="first"><a href="<%= Url.Content("~")%>" id="current">Home</a></li>
            <li><a href="<%= Url.Content("~/Store/")%>">Store</a></li>
            <li>
                **<% Html.RenderAction("CartSummary","ShoppingCart"); %></li>**
            <li><a href="<%= Url.Content("~/StoreManager/") %>">Admin</a></li>
        </ul>

抛出以下异常:

执行处理程序“System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper”的子请求时出错。

有这个内部异常:

“在控制器‘MvcMusicStore.Controllers.ShoppingCartController’上找不到公共操作方法‘CartSummary’。”

……这没有任何意义。“CartSummary”方法定义如下:

// GET: /ShoppingCart/CartSummary
[NHibernateActionFilter]
[ChildActionOnly]
[HttpGet]
public ActionResult CartSummary()
{
    var cart = ShoppingCart.GetCart(this.HttpContext, this.NSession);

    ViewData["CartCount"] = cart.GetCount();

    return PartialView("CartSummary");
}

那么给了什么?我在这里错过了什么吗?

4

3 回答 3

5

如果从子操作中删除 [HttpGet] 属性会发生什么?

如果我是正确的,将使用与调用“主要操作”相同的 HTTP 动词来调用子操作。

于 2012-08-16T15:28:43.737 回答
0

@Cosmo ...是您的控制器“ShoppingCartController”或 ShoppingCart 的名称。如果它是“ShoppingCartController”,那么 html.RenderAction 将会出错,因为控制器名称将不正确。

更改为:Html.RenderAction("CartSummary","ShoppingCartController");

于 2012-08-16T15:28:53.337 回答
0

更改或删除过滤Html.RenderActionHtml.Action[ChildActionOnly]

于 2012-08-16T20:23:43.930 回答